JAVA多线程CyclicBarrier应用
来源:互联网 发布:电大与网络教育双学籍 编辑:程序博客网 时间:2024/06/07 20:48
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。
CyclicBarrier 支持一个可选的 Runnable
命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作 很有用。
- package com.jeyo.java5;
- import java.util.concurrent.BrokenBarrierException;
- import java.util.concurrent.CyclicBarrier;
- public class Test3 {
- //一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)
- final CyclicBarrier barrier;
- //线程数
- int count;
- class Worker implements Runnable{
- int index;
- Worker(int index){
- this.index = index;
- }
- public void run() {
- System.out.println("第" + index + "个线程休眠"+(2 * index)+"秒!");
- try {
- Thread.sleep(2000 * index);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println("第" + index + "个线程结束休眠!");
- try {
- //等待其它线程都处理完毕后,再继续以下代码的执行
- barrier.await();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } catch (BrokenBarrierException e) {
- e.printStackTrace();
- }
- System.out.println(index);
- }
- }
- public Test3(int count){
- this.count = count;
- //公共屏障点 等待到5个线程后,执行相应的barrierAction
- barrier = new CyclicBarrier(count, new Runnable() {
- public void run(){
- System.out.println("全部线程已执行完毕!");
- }
- });
- for(int i=1;i<=this.count;i++){
- new Thread(new Worker(i)).start();
- }
- }
- public static void main(String[] args) {
- new Test3(5);
- }
- }
- JAVA多线程CyclicBarrier应用
- Java多线程之CyclicBarrier
- Java多线程之CyclicBarrier
- JAVA多线程之CyclicBarrier
- Java多线程之CyclicBarrier
- Java多线程之CyclicBarrier
- Java多线程之----CyclicBarrier
- Java多线程系列-CyclicBarrier
- Java多线程CyclicBarrier学习
- Java多线程中的CyclicBarrier
- Java 多线程之CyclicBarrier
- java 多线程-障栅CyclicBarrier
- java多线程[7]:CyclicBarrier
- 多线程 : CyclicBarrier 同步点 应用
- JAVA多线程之(CyclicBarrier)
- Java多线程技术之CyclicBarrier
- java中的多线程包---CyclicBarrier
- Java多线程--CyclicBarrier使用详解
- [求助] 导入多个未打开的Excel文件数据的问题
- 获取Blackberry Device相关信息
- 请问: vba, excel中打开多个xls文件, 搜索字符串,写入另一个sheet的问题
- VBA中如何打开一个文件夹内的所有EXCEL文件?
- VBA实现保存Excel多个工作表中的选择区域为CSV文件
- JAVA多线程CyclicBarrier应用
- Blackberry平台开发,教程,范例
- 约瑟夫问题 pku1012(转自奋斗青春(亚伟)blog)
- 关于excel->csv文件的转换需要使用宏,高分求助- VB / VBA
- 上班
- 获得视频文件编码格式
- google广告优化经验:让广告点击率从0.5%到3.0%
- 2440中断
- Enviroment类