您的位置:首页 > 编程语言 > Java开发

Java中使用信号量——Semaphore

2010-04-23 13:59 525 查看
主线程中:

InitThread initThread=new InitThread(new Semaphore(0));//初始化一个子线程,传一个初值为0的信号量给它
Display.getDefault().asyncExec(initThread);
try {//此处会挂起,直到子线程完成工作,修改了信号量的值,主线程才会继续
initThread.getSemaphore().acquire();
} catch (InterruptedException e1) {
insertConsoleText("数据获取失败……/n");
}


子线程

class InitThread implements Runnable{
private Semaphore semaphore;
public InitThread(Semaphore semaphore){
this.semaphore=semaphore;
}

public Semaphore getSemaphore() {
return semaphore;
}
@SuppressWarnings("unchecked")
public void run() {
dataDos= (List<DataObject>)gui.getDataTableViewer().getInput();
anaDos=(List<DataObject>)gui.getMetaTableViews().get(viewerName).getInput();
excelCode=gui.getExcelCode().getText();
semaphore.release();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: