Java 等待一些线程完成
假设我有一个主屏幕。在这个主线程中,我创建并启动了5个线程。然后,我的主线程必须等到前面创建的线程之一完成。当这样一个线程完成时,我的主线程必须创建并启动另一个线程,以便始终有5个或更少的线程处于活动状态。Java 等待一些线程完成,java,multithreading,counter,Java,Multithreading,Counter,假设我有一个主屏幕。在这个主线程中,我创建并启动了5个线程。然后,我的主线程必须等到前面创建的线程之一完成。当这样一个线程完成时,我的主线程必须创建并启动另一个线程,以便始终有5个或更少的线程处于活动状态。 所以,我的问题是:当达到上限阈值时,是否有类似CountDownLatch的功能使我能够等待?考虑使用线程池。无论如何,下面的代码正在执行您要求的操作 import java.util.concurrent.atomic.AtomicInteger; public class Main {
所以,我的问题是:当达到上限阈值时,是否有类似CountDownLatch的功能使我能够等待?考虑使用线程池。无论如何,下面的代码正在执行您要求的操作
import java.util.concurrent.atomic.AtomicInteger;
public class Main {
public static void main(String[] args) throws InterruptedException {
final AtomicInteger atomicInteger = new AtomicInteger(0);
for (;;) {
while (atomicInteger.get() < 5) {
atomicInteger.getAndIncrement();
Thread t = new Thread() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
atomicInteger.getAndDecrement();
};
};
t.start();
}
Thread.sleep(100);
}
}
}
主线程必须这样做吗?只需将回调/侦听器添加到您的runnables中即可。可能的副本您可以检查5个线程中是否有任何线程已完成,如果没有,则将主线程休眠一段时间。可能是添加一个监听器,它会通知主线程唤醒并生成一个新线程。我不想使用join,因为我不想跟踪所有的线程。是的,主线程必须这样做,因此也不能随意使用侦听器。请参见@MatiCicero给出的链接中的答案列表。。CountDownLatch闩锁=新的CountDownLatch3。。。lock.await;//等待倒计时毕竟我只是用了一个线程池。但是是的,这可以回答我的问题。