public class CountDownLatchDemo {
final static CountDownLatch latch = new CountDownLatch(10);
private static class Task implements Runnable{
@Override
public void run() {
try {
TimeUnit.MILLISECONDS.sleep(new Random().nextInt(10)*1000);
System.out.println(String.format("检查完成, %s",new Date()));
latch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Task task = new Task();
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i<10; i++){
executorService.submit(task);
}
//等待检查
try {
System.out.println("等待检查");
latch.await();
//发射火箭
System.out.println("Ok, Fire !!");
executorService.shutdown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
CountDownLatchDemo
最新推荐文章于 2024-05-16 02:38:06 发布
本文通过一个具体的Java示例展示了如何使用CountDownLatch来同步多个线程。在一个包含10个任务的场景中,每个任务完成后调用countDown()方法,主线程通过await()方法等待所有任务完成。
2864

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



