欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2014年01月16日 09:26:18   作者:  
CyclicBarrier類(lèi)似于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ù),下面使用示例學(xué)習(xí)他的使用方法

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

package com.yao;

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

/**
 * CyclicBarrier類(lèi)似于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();
 }
}

相關(guān)文章

  • Java SpringBoot 集成 Redis詳解

    Java SpringBoot 集成 Redis詳解

    Redis 是一個(gè)由 Salvatore Sanfilippo 寫(xiě)的 key-value 存儲(chǔ)系統(tǒng),是跨平臺(tái)的非關(guān)系型數(shù)據(jù)庫(kù)。Redis 是一個(gè)開(kāi)源的使用 ANSI C 語(yǔ)言編寫(xiě)、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選持久性的鍵值對(duì)(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的 API
    2021-10-10
  • Java字段Stream排序常用方式

    Java字段Stream排序常用方式

    這篇文章主要給大家介紹了關(guān)于Java字段Stream排序常用方式的相關(guān)資料,我們?cè)谔幚頂?shù)據(jù)的時(shí)候經(jīng)常會(huì)需要進(jìn)行排序后再返回給前端調(diào)用,比如按照時(shí)間升序排序,前端展示數(shù)據(jù)就是按時(shí)間先后進(jìn)行排序,需要的朋友可以參考下
    2023-09-09
  • SpringBoot 鉤子接口的實(shí)現(xiàn)代碼

    SpringBoot 鉤子接口的實(shí)現(xiàn)代碼

    本文主要介紹了SpringBoot 鉤子接口,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • Spring AOP底層源碼詳解

    Spring AOP底層源碼詳解

    這篇文章主要介紹了Spring AOP底層源碼詳解,幫助大家更好的理解和學(xué)習(xí)使用Spring AOP,感興趣的朋友可以了解下
    2021-03-03
  • 教你怎么用Java獲取國(guó)家法定節(jié)假日

    教你怎么用Java獲取國(guó)家法定節(jié)假日

    這篇文章主要介紹了教你怎么用Java獲取國(guó)家法定節(jié)假日,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 注冊(cè)中心配置了spring?security后客戶端啟動(dòng)報(bào)錯(cuò)

    注冊(cè)中心配置了spring?security后客戶端啟動(dòng)報(bào)錯(cuò)

    這篇文章主要為大家介紹了注冊(cè)中心配置了spring?security后客戶端啟動(dòng)報(bào)錯(cuò)問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • java開(kāi)發(fā)使用BigDecimal避坑四則

    java開(kāi)發(fā)使用BigDecimal避坑四則

    這篇文章主要為大家介紹了java開(kāi)發(fā)使用BigDecimal的避坑四則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • MyBatis-Plus+Druid配置及應(yīng)用詳解

    MyBatis-Plus+Druid配置及應(yīng)用詳解

    這篇文章主要介紹了MyBatis-Plus+Druid配置及應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 從字節(jié)碼角度解析synchronized和反射實(shí)現(xiàn)原理

    從字節(jié)碼角度解析synchronized和反射實(shí)現(xiàn)原理

    這篇文章主要介紹了從字節(jié)碼角度解析synchronized和反射的實(shí)現(xiàn)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Spring Security實(shí)現(xiàn)微信公眾號(hào)網(wǎng)頁(yè)授權(quán)功能

    Spring Security實(shí)現(xiàn)微信公眾號(hào)網(wǎng)頁(yè)授權(quán)功能

    這篇文章主要介紹了Spring Security中實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08

最新評(píng)論