采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这种计数加上 countDownLatch 的作用在哪里呢,用于每个线程之间的通信,保证线程安全吗,如果去掉CountDownLatch,线程还是安全的嘛,我试了下 结果不是5000了这是为什么呢。。 主要还是没理解用CountDownLatch 的作用,为什么要它来计数 每次执行次数,直接循环5000次 不就是5000次执行吗,
你好,countDownLatch不是用来做线程安全的,他是一个做线程同步的组件。本质上是可以让主线程在当前阻塞,等待其他线程执行完(通过countDown方法)再继续执行。课程里计数的例子添加了countDownLatch的作用:主线程开启了很多线程去运算,希望在所有线程执行完再去打印结果,而countDownLatch就能保证主线程一直阻塞在那里,直到那些线程都执行完。而如果不加这个控制,直接放入线程池就打印,那样可能任务还没调度完,就已经输出count值了,这时候count如果有错,是无法判断是线程不安全导致的,还是线程没都执行完导致的。继续说一下实际中我们会在什么场景使用countDownLatch:比如现在有一个任务,需要开启多个线程去处理,然后在任务执行完去做后面的事情。这时候,要保证开启多个线程都处理完再继续后面的操作,就需要借助countDownLatch了。
谢谢老师,理解了 回复的很快!!!! 感觉这钱花的很值 我刚刚也发现 去掉之后是因为线程还没执行完毕就输出了结果,
非常感谢!
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.7k 1
1.1k 18
1.2k 15
3.6k 12
1.3k 12