countDownLatch 的作用在哪里呢,保证线程安全吗
来源:6-2 J.U.C之AQS-CountDownLatch
慕粉182903712
2018-07-14
这种计数加上 countDownLatch 的作用在哪里呢,用于每个线程之间的通信,保证线程安全吗,如果去掉CountDownLatch,线程还是安全的嘛,我试了下 结果不是5000了这是为什么呢。。 主要还是没理解用CountDownLatch 的作用,为什么要它来计数 每次执行次数,直接循环5000次 不就是5000次执行吗,
写回答
1回答
-
你好,countDownLatch不是用来做线程安全的,他是一个做线程同步的组件。本质上是可以让主线程在当前阻塞,等待其他线程执行完(通过countDown方法)再继续执行。
课程里计数的例子添加了countDownLatch的作用:主线程开启了很多线程去运算,希望在所有线程执行完再去打印结果,而countDownLatch就能保证主线程一直阻塞在那里,直到那些线程都执行完。而如果不加这个控制,直接放入线程池就打印,那样可能任务还没调度完,就已经输出count值了,这时候count如果有错,是无法判断是线程不安全导致的,还是线程没都执行完导致的。
继续说一下实际中我们会在什么场景使用countDownLatch:比如现在有一个任务,需要开启多个线程去处理,然后在任务执行完去做后面的事情。这时候,要保证开启多个线程都处理完再继续后面的操作,就需要借助countDownLatch了。022018-07-15
相似问题
单例模式和安全发布对象
回答 1
无状态的对象一定是线程安全的吗?
回答 2