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