JAVA多线程之CyclicBarrier
来源:互联网 发布:矩阵在密码学中的应用 编辑:程序博客网 时间:2024/05/01 23:27
来源:http://blog.csdn.net/huang_xw/article/details/7090152
package com.fei;import java.util.Random;import java.util.concurrent.CyclicBarrier;/** * CyclicBarrier类似于CountDownLatch也是个计数器, * 不同的是CyclicBarrier数的是调用了CyclicBarrier.await()进入等待的线程数, * 当线程数达到了CyclicBarrier初始时规定的数目时,所有进入等待状态的线程被唤醒并继续。 * CyclicBarrier就象它名字的意思一样,可看成是个障碍, * 所有的线程必须到齐后才能一起通过这个障碍。 * CyclicBarrier初始时还可带一个Runnable的参数, * 此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。 */public class CyclicBarrierTest {public static class ComponentThread implements Runnable {CyclicBarrier barrier;// 计数器int ID;// 组件标识int[] array;// 数据数组// 构造方法public ComponentThread(CyclicBarrier barrier, int[] array, int ID) {this.barrier = barrier;this.ID = ID;this.array = array;}public void run() {try {array[ID] = new Random().nextInt(100);System.out.println("Component " + ID + " generates: " + array[ID]);// 在这里等待Barrier处System.out.println("Component " + ID + " sleep...");barrier.await();System.out.println("Component " + ID + " awaked...");// 计算数据数组中的当前值和后续值int result = array[ID] + array[ID + 1];System.out.println("Component " + ID + " result: " + result);} catch (Exception ex) {}}}/** * 测试CyclicBarrier的用法 */public static void testCyclicBarrier() {final int[] array = new int[3];CyclicBarrier barrier = new CyclicBarrier(2, new Runnable() {// 在所有线程都到达Barrier时执行public void run() {System.out.println("testCyclicBarrier run...");array[2] = array[0] + array[1];}});// 启动线程new Thread(new ComponentThread(barrier, array, 0)).start();new Thread(new ComponentThread(barrier, array, 1)).start();}public static void main(String[] args) {CyclicBarrierTest.testCyclicBarrier();}}
- 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多线程同步工具之CyclicBarrier
- 我之见--java 多线程CyclicBarrier
- Java多线程之~~~CyclicBarrier 类的使用
- java多线程之利用“CyclicBarrier”汇总结果
- java多线程之CyclicBarrier类基本用法
- java多线程之CyclicBarrier简单用法
- Android系统自带样式(android:theme)
- NYoj 104 最大和 [经典动态规划2]
- 3DES 加密
- extremecomponents-1.0.1.jar 的使用小例子
- 列出指定目录下的文件(Java 目录和文件操作)
- JAVA多线程之CyclicBarrier
- PyCharm 教程(五)断点 调试
- Nginx和PHP-FPM的启动/重启脚本
- linux杀死进程的简单讲解
- Wsgi研究
- 调用父类的带参数的构造函数
- CFile::modeNoTruncate
- 黑马程序员_Java高新技术之反射 Constructor类
- android 启动过程分析