java并发编程(22):并发新特性—障碍器cyclicbarrier(含代码)-编程开发技术

java并发编程(22):并发新特性—障碍器cyclicbarrier(含代码)-编程开发技术

ID:30780008

大小:56.79 KB

页数:6页

时间:2019-01-03

java并发编程(22):并发新特性—障碍器cyclicbarrier(含代码)-编程开发技术_第1页
java并发编程(22):并发新特性—障碍器cyclicbarrier(含代码)-编程开发技术_第2页
java并发编程(22):并发新特性—障碍器cyclicbarrier(含代码)-编程开发技术_第3页
java并发编程(22):并发新特性—障碍器cyclicbarrier(含代码)-编程开发技术_第4页
java并发编程(22):并发新特性—障碍器cyclicbarrier(含代码)-编程开发技术_第5页
资源描述:

《java并发编程(22):并发新特性—障碍器cyclicbarrier(含代码)-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、hva并发编程(22):并发新特性—障碍器CyclicBarricr(含代码)-编程开发技术Java并发编程(22):并发新特性一障碍器Cyc1icBarrier(含代码)原文出处:兰亭风雨CyclicBarrier(又叫障碍器)同样是Java5+加入的新特性,使用时需要导入java.util,concurrent.C)4icBarrier0它适用于这样一种情况:你希望创建一组任务,它们并发地执行工作,另外的一个任务在这一组任务并发执行结朿前一直阻塞等待,直到该组任务全部执行结束,这个任务才得以执行。这非常像CountDownLatch,只是CountDown

2、Latch是只触发一次的事件,而CyclicBarricr可以多次重用。下面给出一个简单的实例來说明其用法:importjava.util,concurrent.BrokenBarrierException;importjava・uti1.concurrent.CyclicBarricr;publicclassCyc1icBarrierTest{publicstaticvoidmain(String[]args){//创建CyclicBarrier对象,〃并设置执行完一组5个线程的并发任务后,再执行MainTask任务CyclicBarriercb=newCy

3、clicBarrier(5,newMainTaskO);cb).start();cb).start();cb).start();cb).start();cb).start();newSubTask(〃A〃,newSubTasknewSubTask(,ZC/Z,newSubTask(〃D〃,newSubTask(,ZEZ,,/***最后执行的任务*/classMainTaskimplementsRunnable{publicvoidrun(){System,out.printlnC终于要执行最后的任务T……〃);}/***一组并发任务*/classSubTask

4、cxtcndsThread{privateStringname;privateCyclicBarriercb;SubTask(Stringname,CyclicBarriercb){this.name二name;this・cb=cb;publicvoidrun(){System,out.println(〃[并发任务〃+name+“]开始执行〃);for(inti=0;i<999999;i++);//模拟耗时的任务System,out.printin(,z[并发任务〃+name+“]开始执行完毕,通知障碍器〃);try{〃每执行完一项任务就通知障碍器cb.awa

5、it();}catch(InterruptedExceptione){e.printStackTrace();}catch(BrokenBarrierExceptione){e.printStackTrace();某次执行的结果如下:[并发任务A][并发任务B][并发任务D][并发任务E]?开始执行?开始执行?开始执行?开始执行[并发任务A]?开始执行完毕,[并发任务E]?开始执行完毕,通知障碍器通知障碍器[并发任务D]?开始执行完毕,通知障碍器[并发任务C]?开始执行[并发任务引?开始执行完毕,[并发任务C]?开始执行完毕,通知障碍器通知障碍器终于要执行最后

6、的任务了从结果可以看出:MdinTeisk任务在一组中的5个任务执行完后才开始执行。本系列:Java并发编程(1)Java并发编程(2)Java并发编程(3)Java并发编程(4)Java并发编程(5)Java并发编程(6)Java并发编程(7)Java并发编程(8)Java并发编程(9)Java并发编程(12):Java并发编程(13):町重入内置锁线程中断(含代码)线程挂起、恢复与终止的正确方法(含代码)守护线程与线程阻塞的四种情况volatile变最修饰符一意料之外的问题(含代码)Runnable和Thread实现多线程的区别(含代码)使用synchro

7、nized获取互斥锁的几点说明多线程环境中安全使用集合API(含代码)死锁(含代码)Java并发编程(10):使用wait/notify/notifyAll实现线程间通信的几点重要说明Java并发编程(11):线程间通信中notify通知的遗漏(含代码)线程间通信中notifyAll造成的早期通知问题(含代码)纶产者一消费者模型(含代码)Java并发编程(14):图文讲述同步的另一个重要功能一内存可见性Java并发编程(15):并发编程屮实现内存可见的两种方法比较一加锁和volatile变Java并发编程(16):深入Java内存模型一happen-befor

8、e规则及其对DCL的分析(含代码)Ja

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。