Java中使用信号量——Semaphore

 主线程中:

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(); } } 

 

你可能感兴趣的:(java,工作,Semaphore,Class)