倒计数器:CountDownLatch
2023-12-20 19:06:23
CountDownLatch 是 Java 中用于多线程编程的一个同步工具。
它允许一个或多个线程等待其他线程执行完特定操作后再继续执行。
CountDownLatch 通过一个计数器来实现,
该计数器初始化为一个正整数,每当一个线程完成了指定操作,计数器就会减一。
当计数器变为零时,所有等待的线程将被唤醒,可以继续执行后续操作。
CountDownLatch 在并发编程中常用于等待多个线程完成某个任务,
然后再进行下一步操作。
倒计数器,门闩的含义就是把门锁起来,不让里面的线程跑出来。
因此,这个工具通常用来控制线程等待,它可以让某一个线程等待
直到倒计数结束再开始执行。
public class CountDownLatchDemo implements Runnable{
static final CountDownLatch end = new CountDownLatch(10);
static final CountDownLatchDemo demo = new CountDownLatchDemo();
@Override
public void run() {
try{
Thread.sleep(new Random().nextInt(10)*1000);
System.out.println("check complete");
end.countDown();
}catch (InterruptedException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(10);
for(int i =0;i<10;i++){
executorService.submit(demo);
}
try {
end.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("Finish!");
executorService.shutdown();
}
}
生成一个CountDownLatch实例,计数数量为10,
这表示需要10个线程完成任务等待在CountDownLatch上的线程才能继续执行。
代码中使用CountDownLatch.countdown()方法,通知CountDownLatch,
一个线程已经完成了任务,倒计数器减1.
CountDownLatch.await()方法,要求主线程等待所有检查任务全部完成,
待10个任务全部完成后,主线程才能继续执行。
文章来源:https://blog.csdn.net/wcg_jishuo/article/details/135114549
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!