countDownLatch 的作用在哪里呢,保证线程安全吗

来源:6-2 J.U.C之AQS-CountDownLatch

慕粉182903712

2018-07-14

这种计数加上 countDownLatch 的作用在哪里呢,用于每个线程之间的通信,保证线程安全吗,如果去掉CountDownLatch,线程还是安全的嘛,我试了下 结果不是5000了这是为什么呢。。 主要还是没理解用CountDownLatch 的作用,为什么要它来计数 每次执行次数,直接循环5000次  不就是5000次执行吗,

写回答

1回答

Jimin

2018-07-14

你好,countDownLatch不是用来做线程安全的,他是一个做线程同步的组件。本质上是可以让主线程在当前阻塞,等待其他线程执行完(通过countDown方法)再继续执行。

课程里计数的例子添加了countDownLatch的作用:主线程开启了很多线程去运算,希望在所有线程执行完再去打印结果,而countDownLatch就能保证主线程一直阻塞在那里,直到那些线程都执行完。而如果不加这个控制,直接放入线程池就打印,那样可能任务还没调度完,就已经输出count值了,这时候count如果有错,是无法判断是线程不安全导致的,还是线程没都执行完导致的。

继续说一下实际中我们会在什么场景使用countDownLatch:比如现在有一个任务,需要开启多个线程去处理,然后在任务执行完去做后面的事情。这时候,要保证开启多个线程都处理完再继续后面的操作,就需要借助countDownLatch了。

0
2
慕粉182903712
非常感谢!
2018-07-15
共2条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程