请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答

1回答

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

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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉182903712 #1
    谢谢老师,理解了  回复的很快!!!! 感觉这钱花的很值
    我刚刚也发现 去掉之后是因为线程还没执行完毕就输出了结果,
    回复 有任何疑惑可以回复我~ 2018-07-14 22:24:31
  • 提问者 慕粉182903712 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-07-15 10:18:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信