所以我在一个方法中有这个:
Runnable task = new PostLoadRunnable(tool, archive);
SwingUtilities.invokeLater(task);
但是我想这样做,以便在任务线程完成之前,当前方法不会继续。我想做join()
之类的事情,但我无法弄清楚如何做到这一点。 task.join()
和Thread.task.join()
不起作用,Thread.currentThread().join()
没有给我任何选项来加入我想要的主题。
如何在任务完成之前停止该方法?
答案 0 :(得分:1)
你根本不想这样做。您在注释中声明此代码在事件调度程序线程中运行。你一定不能阻止这个帖子。否则你将冻结整个用户界面,用户将非常不满意。
您可能应该做的是在任务完成之前禁用UI的相关部分。但是,如果不了解您的实际更广泛的要求,就无法确定。
答案 1 :(得分:0)
您可以使用CountDownLatch
完成此操作。在PostLoadRunnable
run方法中,您可以在finally部分中使用以下代码。
public void run() {
try {
...
} finally {
latch.countDown();
}
}
CountDownLatch latch = CountDownLatch(1);
Runnable task = new PostLoadRunnable(tool, archive, latch);
SwingUtilities.invokeLater(task);
latch.await();