国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

java線程并發(fā)cyclicbarrier類使用示例

2019-11-26 15:46:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

復(fù)制代碼 代碼如下:

package com.yao;

import java.util.Random;
import java.util.concurrent.CyclicBarrier;

/**
 * CyclicBarrier類似于CountDownLatch也是個(gè)計(jì)數(shù)器,
 * 不同的是CyclicBarrier數(shù)的是調(diào)用了CyclicBarrier.await()進(jìn)入等待的線程數(shù),
 * 當(dāng)線程數(shù)達(dá)到了CyclicBarrier初始時(shí)規(guī)定的數(shù)目時(shí),所有進(jìn)入等待狀態(tài)的線程被喚醒并繼續(xù)。
 * CyclicBarrier就象它名字的意思一樣,可看成是個(gè)障礙,
 * 所有的線程必須到齊后才能一起通過(guò)這個(gè)障礙。
 * CyclicBarrier初始時(shí)還可帶一個(gè)Runnable的參數(shù),
 * 此Runnable任務(wù)在CyclicBarrier的數(shù)目達(dá)到后,所有其它線程被喚醒前被執(zhí)行。
 */
public class CyclicBarrierTest {

 public static class ComponentThread implements Runnable {
  CyclicBarrier barrier;// 計(jì)數(shù)器
  int ID; // 組件標(biāo)識(shí)
  int[] array; // 數(shù)據(jù)數(shù)組

  // 構(gòu)造方法
  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...");
    // 計(jì)算數(shù)據(jù)數(shù)組中的當(dāng)前值和后續(xù)值
    int result = array[ID] + array[ID + 1];
    System.out.println("Component " + ID + " result: " + result);
   } catch (Exception ex) {
   }
  }
 }
 /**
  * 測(cè)試CyclicBarrier的用法
  */
 public static void testCyclicBarrier() {
  final int[] array = new int[3];
  CyclicBarrier barrier = new CyclicBarrier(2, new Runnable() {
   // 在所有線程都到達(dá)Barrier時(shí)執(zhí)行
   public void run() {
    System.out.println("testCyclicBarrier run...");
    array[2] = array[0] + array[1];
   }
  });

  // 啟動(dòng)線程
  new Thread(new ComponentThread(barrier, array, 0)).start();
  new Thread(new ComponentThread(barrier, array, 1)).start();
 }

 public static void main(String[] args) {
  CyclicBarrierTest.testCyclicBarrier();
 }
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 赞皇县| 江西省| 秀山| 宕昌县| 禄丰县| 富蕴县| 福安市| 敦煌市| 五大连池市| 嘉黎县| 开原市| 陆川县| 通州市| 金乡县| 手游| 博乐市| 阜平县| 阿克苏市| 平乐县| 米易县| 邹城市| 香格里拉县| 抚宁县| 阳新县| 中山市| 游戏| 鄂尔多斯市| 彝良县| 柯坪县| 两当县| 合水县| 会同县| 临泽县| 荆州市| 宣化县| 弋阳县| 筠连县| 临桂县| 宿州市| 长葛市| 天门市|