java.util.concurrent.CountDownLatch用来控制线程等待,让指定线程等待直到计数结束再开始执行;
火箭发射前倒计时,main方法等待10个检查线程都检查完毕后,再执行发射;
public class CountDownLatchDemo implements Runnable {
private static final CountDownLatch COUNT_DOWN_LATCH = new CountDownLatch(10);
private static final CountDownLatchDemo DEMO = new CountDownLatchDemo();
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(new Random().nextInt(10));
System.out.println(Thread.currentThread().getName() + " check complete.");
COUNT_DOWN_LATCH.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws InterruptedException {
ExecutorService exec = Executors.newFixedThreadPool(10);
for(int i = 0; i < 10; i++) {
exec.submit(DEMO);
}
COUNT_DOWN_LATCH.await();
System.out.println("Fire!");
exec.shutdown();
}
}
本文介绍java.util.concurrent.CountDownLatch的使用,通过实例演示如何让主线程等待多个子线程完成任务后继续执行,如火箭发射前的倒计时场景。
775

被折叠的 条评论
为什么被折叠?



