一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java線程并發cyclicbarrier類使用示例

java線程并發cyclicbarrier類使用示例

2019-10-31 14:59java技術網 JAVA教程

CyclicBarrier類似于CountDownLatch也是個計數器,不同的是CyclicBarrier數的是調用了CyclicBarrier.await()進入等待的線程數,當線程數達到了CyclicBarrier初始時規定的數目時,所有進入等待狀態的線程被喚醒并繼續,下面使用示例學習他的使用方

代碼如下:


package com.yao;

 

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();
 }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 小苹果日本在线观看 | 十八女下面流水不遮免费 | 国产精品久久久精品日日 | 亚洲乱码一区二区三区国产精品 | 91制片厂制作果冻传媒2021 | 美女脱了内裤打开腿让人桶网站o | 欧美成人免费草草影院视频 | 国内偷拍第一页 | 久操久操久操 | 亚洲AV久久无码精品蜜桃 | 久久亚洲午夜牛牛影视 | 日本高清在线播放 | 激情乱文 | 99久久99热久久精品免 | 成人国产在线观看 | 久久re这里精品23 | 国产成人99精品免费观看 | 国产视频一区二区 | 大学生按摩黄a级中文片 | 波多野结衣在线观看视频 | 欧美区在线 | 人人看人人射 | 天天综合色天天综合网 | 亚洲www美色 | 我的好妈妈7中字在线观看韩国 | 四虎国产视频 | 久久亚洲精品AV成人无码 | 驯服有夫之妇HD中字日本 | 国产黑丝一区 | 精品9e精品视频在线观看 | 亚洲va久久久久 | 精品视频在线观看免费 | juy_661佐佐木明希在线播放 | 亚洲一区二区三区福利在线 | 日本无卡码一区二区三区 | voyeur 中国女厕 亚洲女厕 | 草莓绿巨人香蕉茄子芭乐 | 国产成人精品男人的天堂538 | 欧美侏儒xxx | 欧乱色国产精品兔费视频 | 99精品视频在线观看re |