java - 在继续当前线程之前等待线程完成?

标签 java multithreading

所以我在一个方法中有这个:

Runnable task = new PostLoadRunnable(tool, archive);
SwingUtilities.invokeLater(task);

但我想让当前方法在任务线程完成之前不会继续。我想做一些类似 join() 的事情,但我不知道该怎么做。 task.join()Thread.task.join() 不起作用,而 Thread.currentThread().join() 不起作用不要给我任何选项来将其加入到我想要的线程中。

如何停止该方法直到任务完成?

最佳答案

您可以使用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();

关于java - 在继续当前线程之前等待线程完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227491/

相关文章:

Java:清除 JFrame 并加载新按钮

java - S3内容长度错误

java - Ubuntu 64位13.04下无法启动Android Studio

java - 调用 Thread.stop 方法可能会造成什么样的损害?

java - 如何使用 Java 在 Windows 中比较 Fedora iso 下载文件与其 sha-256 校验和文本文件?

java - swing 和 mvc - 监听器的放置位置

python - 让主线程等待所有线程完成

java - 将 ThreadFactory 传递给 ScheduledThreadPoolExecutor

c# - 根据 FileSystemWatcher 更改通知更改 ObservableCollection

android - 从线程中停止 Android 服务