手机
当前位置:查字典教程网 >编程开发 >Java >Java中CyclicBarrier的用法分析
Java中CyclicBarrier的用法分析
摘要:复制代码代码如下:publicclassTestCyclicBarrier{privatestaticfinalintTHREAD_NUM=...

复制代码 代码如下:

public class TestCyclicBarrier {

private static final int THREAD_NUM = 5;

public static class WorkerThread implements Runnable{

CyclicBarrier barrier;

public WorkerThread(CyclicBarrier b){

this.barrier = b;

}

@Override

public void run() {

// TODO Auto-generated method stub

try{

System.out.println("Worker's waiting");

//线程在这里等待,直到所有线程都到达barrier。

barrier.await();

System.out.println("ID:"+Thread.currentThread().getId()+" Working");

}catch(Exception e){

e.printStackTrace();

}

}

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

CyclicBarrier cb = new CyclicBarrier(THREAD_NUM, new Runnable() {

//当所有线程到达barrier时执行

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println("Inside Barrier");

}

});

for(int i=0;i<THREAD_NUM;i++){

new Thread(new WorkerThread(cb)).start();

}

}

}

/*

以下是输出:

Worker's waiting

Worker's waiting

Worker's waiting

Worker's waiting

Worker's waiting

Inside Barrier

ID:12 Working

ID:8 Working

ID:11 Working

ID:9 Working

ID:10 Working

*/

1. CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。

2. CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。

3. CyclicBarrier初始时还可带一个Runnable的参数, 此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。

【Java中CyclicBarrier的用法分析】相关文章:

浅析JAVA中toString方法的作用

java集合框架 arrayblockingqueue应用分析

Java之String、StringBuffer、StringBuilder的区别分析

java多线程中的异常处理机制简析

JAVA中STRING的常用方法小结

JAVA简单分组的算法实现

java类型生命周期的详细解析

java中使用Filter控制用户登录权限具体实例

java与c#的语法区别详细介绍

基于JVM 调优的技巧总结分析

精品推荐
分类导航