弱弱的问一句CountDownLatch与CyclicBarrier的区别

问题描述

我知道 CountDownLatch使一个或多个线程等待其他线程,CylicBarrier使所有线程相互等待但是完全可以使用CountDownLatch替代CyliBarrier的啊package Thread;import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;public class line3 implements Runnable{private CountDownLatch cd;private int id;public line3(CountDownLatch cd,int id){this.cd=cd;this.id=id;}public void run() {try {TimeUnit.MILLISECONDS.sleep(id*1000);cd.countDown();//这样貌似和CylicBarrier一个效果啊System.out.println("countDown"+id);cd.await();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("line3 "+id);} public static void main(String[] args) {CountDownLatch cd=new CountDownLatch(10);ExecutorService es=Executors.newCachedThreadPool();for (int i = 0; i < 10; i++) {es.execute(new line3(cd,i));}es.shutdown();}}书上说CylicBarrier可以重复使用,CountDownLatch只能用一次,这个一直看不明白啊?求高手解决

解决方案

首先,CyclicBarrier可以多次使用,CountDownLatch只能用一次(为0后不可变)其次,Barrier是等待指定数量线程到达再继续处理;Latch是等待指定事件变为指定状态后发生再继续处理,对于CountDown就是计数减为0的事件,但你也可以实现或使用其他Latch就不是这个事件了...Barrier是等待指定数量任务完成,Latch是等待其他任务完成指定状态的改变再继续。。。
解决方案二:
区别在于cycle use。CountDownLatch 只能触发一次,计数值不能被重置。CyclicBarrier可以多次重复使用

时间: 2024-08-27 07:07:51

弱弱的问一句CountDownLatch与CyclicBarrier的区别的相关文章

CountDownLatch和CyclicBarrier 专题

javadoc里面的描述是这样的. CountDownLatch: A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.(其它线程完成一些操作,但不等于这些线程要结束,也要不结束) CyclicBarrier : A synchronization aid that allows a se

msmq-弱弱的问一句,MSMQ和页面异步刷新是一个概念的东西吗

问题描述 弱弱的问一句,MSMQ和页面异步刷新是一个概念的东西吗 在petshop案例看到的MSMQ,说是异步通讯的东西,跟异步刷新是一回事吗? 解决方案 它们唯一的类似之处都是异步.所谓异步,就是开始做一件事情,不等结果出来,就继续做别的事情. 消息队列中的异步是说,比如说你发消息或者做一个长时间的计算,不等完成,而是把任务推进去让它自己做,msmq是做这个的. 页面异步刷新说的是,初始阶段,你的浏览器从服务器获取的网页,并不包含全部的内容,而这些内容是随着你的客户端的运行,即时获取的,从服务

小菜鸟弱弱的问一句怎么在Microsoft Visual Studio 2010的form中的属性写事件啊?

问题描述 小菜鸟弱弱的问一句怎么在MicrosoftVisualStudio2010的form中的属性写事件啊?[img=http://b151.photo.store.qq.com/psb?/bfc51046-87e3-466f-b460-4730d42a104e/AmFVoa36OQhaKLSNbCVTQKU1ZIuT.nWqyYV*BAtxSnk!/b/YV5XAlrlNwAAYgICDVqaPQAA][/img]我想在我拖动外面的窗体的时候,里面的ListView的大小跟着一起变大变小怎

弱弱地问一下:opencv都可以调用普通的免驱笔记本外接摄像头吗?

问题描述 弱弱地问一下:opencv都可以调用普通的免驱笔记本外接摄像头吗? 如题~直接cvCaptureFromCAM....巴拉巴拉就可以直接调用了吗(想买个笔记本外接摄像头) 解决方案 看看这个能不能用到,http://blog.sina.com.cn/s/blog_4a189c920101cm8v.html

弱弱地问一下:可以用电脑opencv编程,用手机做摄像头来识别物体吗?

问题描述 弱弱地问一下:可以用电脑opencv编程,用手机做摄像头来识别物体吗? 大致有哪几模块或步骤(手机仅仅做摄像头,需要在安卓手机上编程吗)?谢谢大神们 解决方案 参考:http://jingyan.baidu.com/article/1876c852d587a9890b1376a3.html

弱弱问下:asp:Button如何设置背景。

问题描述 弱弱问下:asp:Button如何设置背景.(C#) 解决方案 解决方案二:你用CSS写个你想要设置的背景,,然后在asp:Button的CssClass属性里面把你这css的名字填进去就可以了.解决方案三:好像有时候背景色要先设置透明解决方案四:换成ImageButton解决方案五:<buttonid="btn"name="mybtn"style="background:******"></button>这样就

弱弱的问一下:电脑上安装了.NET FRAMEWORK 后,是不是即使不安装VS,Console等类的代码也在电脑里了??

问题描述 弱弱的问一下:电脑上安装了.NETFRAMEWORK后,是不是即使不安装VS,有关的类(比如Console类)的代码也已经随着.NETFRAMEWORK的安装而在电脑里了?? 解决方案 解决方案二:代码??装了vs也没有吧?dll是有的解决方案三:是在框架的dll中解决方案四:VS只是IDE工具,不是环境--Frame包含了微软自己提供的dll解决方案五:是的.解决方案六:.NETFRAMEWORK中只有运行库如要做开发还需安装.NETSDK解决方案七:是的,你可以安装好VS后把这些引

关于南京外包公司的面试题目……偶要去笔试啊,弱弱的

问题描述 下周就要去面试了,说了是先来个笔试再面试,弱弱的问问--笔试题一般都是些什么题目啊?分别是文思.上海易保和软通动力--大家给点意见啊 解决方案 解决方案二:网上找一下呗解决方案三:基础题编程题智力题就这

if else if-关于if-else if。菜菜鸟弱弱的提问

问题描述 关于if-else if.菜菜鸟弱弱的提问 Console.WriteLine("你的年龄为?"); int age = Convert.ToInt32(Console.ReadLine()); if (age >= 18) { Console.WriteLine("你可以查看有关内容."); } else if (age < 10) { Console.WriteLine("抱歉,你不能查看相关内容."); } else