Java中CyclicBarrier的用法分析

123456789忠诚

123456789忠诚

2016-02-19 11:08

今天图老师小编给大家展示的是Java中CyclicBarrier的用法分析,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

代码如下:

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;iTHREAD_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
 */

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

1. CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。
2. CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。
3. CyclicBarrier初始时还可带一个Runnable的参数, 此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

Java中CyclicBarrier的用法分析

编程语言 网络编程
Java中CyclicBarrier的用法分析

解析java中This的用法分析

编程语言 网络编程
解析java中This的用法分析

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

解析java中super的用法分析

编程语言 网络编程
解析java中super的用法分析

Java for循环的几种用法分析

编程语言 网络编程
Java for循环的几种用法分析

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

浅析Java中Split函数的用法技巧

编程语言 网络编程
浅析Java中Split函数的用法技巧

Java中对HashMap的深度分析

Java JAVA基础
Java中对HashMap的深度分析

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

自己编写宏让Excel2007单元格或者整列左移右移

自己编写宏让Excel2007单元格或者整列左移右移

解决JSP开发中Web程序显示中文三种方法

解决JSP开发中Web程序显示中文三种方法
下拉加载更多内容 ↓