[英]Wait for a thread to finish before continuing the current thread?
所以我有一个方法:
Runnable task = new PostLoadRunnable(tool, archive);
SwingUtilities.invokeLater(task);
但是我想这样做,以使当前方法在任务线程完成之前不会继续。 我想做类似join()
事情,但是我不知道怎么做。 task.join()
和Thread.task.join()
不起作用,并且Thread.currentThread().join()
没有给我任何选择将其连接到所需的线程。
如何在任务完成之前停止该方法?
您根本不想这样做。 您可以在注释中声明该代码在事件调度程序线程中运行。 您不得阻止此线程。 否则,您将冻结整个UI,并且用户将非常不满意。
您可能应该做的是禁用UI的相关部分,直到任务完成。 但是,如果不知道您实际的更广泛的要求,就无法确定。
您可以使用CountDownLatch
完成此操作。 在PostLoadRunnable
运行方法中,您可以在finally部分中包含以下代码。
public void run() {
try {
...
} finally {
latch.countDown();
}
}
CountDownLatch latch = CountDownLatch(1);
Runnable task = new PostLoadRunnable(tool, archive, latch);
SwingUtilities.invokeLater(task);
latch.await();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.