Java中使用信号量——Semaphore时间:2022-10-04 15:10:11 主线程中: 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(); } }