import java.util.Date;
import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class CountDownLatchDemo implements Runnable {
final static CountDownLatch end = new CountDownLatch(10); // 要等待10个线程,检查完毕
// final static CountDownLatch end = new CountDownLatch(2); // 要等待2个线程,检查完毕
final static CountDownLatchDemo demo = new CountDownLatchDemo();
@Override
public void run() {
try {
Thread.sleep(new Random().nextInt(10) * 1000); // 模拟检查任务
System.out.println(Thread.currentThread().getName() + ": 检查完毕." + new Date());
end.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);
}
end.await(); // 等待检查
System.out.println(Thread.currentThread().getName() + ": 全部检查完毕,发射火箭");
exec.shutdown();
}
}
JDK并发包---(9)倒计时器:CountDownLatch
最新推荐文章于 2024-08-11 13:38:47 发布