等待一些线程完成

时间:2014-12-16 18:20:42

标签: java multithreading counter

假设我有一个主要的thead。在这个主线程中,我创建并启动5个线程。然后我的主线程必须等到其中一个先前创建的线程完成。当这样的线程完成时,我的主线程必须创建并启动另一个线程,这样总有5个(或更少)线程处于活动状态。 所以,我的问题是:是否有像CountDownLatch这样的东西能让我在达到上限时等待?

1 个答案:

答案 0 :(得分:1)

考虑使用线程池。无论如何,下面的代码正在满足您的要求。

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);
        }
    }
}