CyclicBarrier 使用说明
2015-11-27 10:12
483 查看
字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。
主要方法:
public int await() throws InterruptedException, BrokenBarrierException
用来挂起当前线程,直至所有线程都到达barrier状态再同时执行后续任务。
例子:
跟团旅游,没到一个景点导游给介绍完后,让大家自由活动,然后约定好(某个时间)在下一个景点集合。
主要方法:
public int await() throws InterruptedException, BrokenBarrierException
用来挂起当前线程,直至所有线程都到达barrier状态再同时执行后续任务。
例子:
跟团旅游,没到一个景点导游给介绍完后,让大家自由活动,然后约定好(某个时间)在下一个景点集合。
import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CyclicBarrierTest { public static void main(String[] args) { ExecutorService service = Executors. newCachedThreadPool(); final CyclicBarrier cb = new CyclicBarrier(3); for(int i = 0; i < 3; i++){ Runnable runnable = new Runnable(){ public void run(){ try { Thread. sleep((long)(Math. random()*10000)); System. out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点1,当前已有" + (cb.getNumberWaiting()+1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候" )); cb.await(); Thread. sleep((long)(Math. random()*10000)); System. out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点2,当前已有" + (cb.getNumberWaiting()+1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候" )); cb.await(); Thread. sleep((long)(Math. random()*10000)); System. out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点3,当前已有" + (cb.getNumberWaiting() + 1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候" )); cb.await(); } catch (Exception e) { e.printStackTrace(); } } }; service.execute(runnable); } service.shutdown(); } }
相关文章推荐
- ios开发之 icon规范+启动图规范+启动页规范
- scala Ordering
- opencv:把三通道图转换成灰度图、二值图
- 引用自定义View的布局异常 android.view.InflateException: Binary XML file line #5: Error inflating class ...
- WebRTC音视频引擎研究(1)
- 实例化为子物体
- 查看linux cpu和内存利用率__linux - top命令
- semaphore(信号量)使用说明
- ci 在阿里云访问的时候404
- 微信支付PHP SDK —— 公众号支付代码详解
- Android 之 json数据的解析(jsonReader)
- HDMI TO MIPI 的实现
- 时间的转化
- LeetCode OJ : 3 Longest Substring Without Repeating Characters
- tomcat配置文件详解
- source insight 多行注释
- Curl批量打开网址的PHP类,curl_multi_init
- 开心消消乐刷金币
- JavaScript 创建对象的几种方式?
- [SharePoint 2010]Sandboxed Solution (沙箱解決方案)