Java 等待一些线程完成

Java 等待一些线程完成,java,multithreading,counter,Java,Multithreading,Counter,假设我有一个主屏幕。在这个主线程中,我创建并启动了5个线程。然后,我的主线程必须等到前面创建的线程之一完成。当这样一个线程完成时,我的主线程必须创建并启动另一个线程,以便始终有5个或更少的线程处于活动状态。 所以,我的问题是:当达到上限阈值时,是否有类似CountDownLatch的功能使我能够等待?考虑使用线程池。无论如何,下面的代码正在执行您要求的操作 import java.util.concurrent.atomic.AtomicInteger; public class Main {

假设我有一个主屏幕。在这个主线程中,我创建并启动了5个线程。然后,我的主线程必须等到前面创建的线程之一完成。当这样一个线程完成时,我的主线程必须创建并启动另一个线程,以便始终有5个或更少的线程处于活动状态。
所以,我的问题是:当达到上限阈值时,是否有类似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;//等待倒计时毕竟我只是用了一个线程池。但是是的,这可以回答我的问题。