java - 如何在所有线程完成时立即做某事?

标签 java multithreading synchronization

假设我想要运行 n 个线程,并且我想在所有线程完成时输出一些内容。以下是我尝试过的方法:

//This uses a ThreadGroup called tGroup
while(tGroup.activeCount() > 0) {
    try {
        Thread.sleep(10000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

接下来只是一个 while 循环和一个存储线程的 ArrayList

boolean alive = true;
int count = 0;
while (alive) {
    count = 0;
    for (int i = 0; i < numThreads; i++) {
        if (!threads.get(i).isAlive()) {
            count++;
        }
        if (count == numThreads) {
            alive = false;
            break;
        }
    }
}

最佳答案

遍历所有线程并join() 每个线程。 join() 将阻塞任何未完成的线程,直到它完成。

关于java - 如何在所有线程完成时立即做某事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492547/

相关文章:

c# - Java 中的正则表达式匹配

python - 为什么我在 Python 中的线程化 MySQLdb 查询比相同的非线程化查询慢?

node.js - Node.js 中使用 spawn() 的多命令 shell 作为分 ionic 进程

Java 保证死锁

java - Android Studio 1.0 编译错误 - 沿边缘不能有多个标记区域

Java:记住处理哪些对象的有效方法

java - 如何在方法中获取声明的类?

python - 当我放入队列或从队列中取出队列时,我是否应该麻烦锁定队列?

http - 使用 sync.Pool 引用作为上下文值是否安全?

jQuery 功能同步(仅适用于警报)