最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中CountDownLatch用法解析

 更新時間:2017年01月14日 13:05:37   作者:Java開發(fā)-擱淺  
這篇文章主要為大家詳細(xì)介紹了Java中CountDownLatch用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

CountDownLatch類是一個同步計數(shù)器,構(gòu)造時傳入int參數(shù),該參數(shù)就是計數(shù)器的初始值,每調(diào)用一次countDown()方法,計數(shù)器減1,計數(shù)器大于0 時,await()方法會阻塞程序繼續(xù)執(zhí)行

CountDownLatch如其所寫,是一個倒計數(shù)的鎖存器,當(dāng)計數(shù)減至0時觸發(fā)特定的事件。利用這種特性,可以讓主線程等待子線程的結(jié)束。下面以一個模擬運(yùn)動員比賽的例子加以說明。

 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 public class CountDownLatchDemo {
   private static final int PLAYER_AMOUNT = 5;
   public CountDownLatchDemo() {
     // TODO Auto-generated constructor stub  
   }
   /**
   * @param args
   */
   public static void main(String[] args) {
     // TODO Auto-generated method stub
     //對于每位運(yùn)動員,CountDownLatch減1后即結(jié)束比賽
     CountDownLatch begin = new CountDownLatch(1);
     //對于整個比賽,所有運(yùn)動員結(jié)束后才算結(jié)束
     CountDownLatch end = new CountDownLatch(PLAYER_AMOUNT);
     Player[] plays = new Player[PLAYER_AMOUNT];
     
     for(int i=0;i<PLAYER_AMOUNT;i++)
       plays[i] = new Player(i+1,begin,end);
     
     //設(shè)置特定的線程池,大小為5
     ExecutorService exe = Executors.newFixedThreadPool(PLAYER_AMOUNT);
     for(Player p:plays)
       exe.execute(p);      //分配線程
     System.out.println("Race begins!");
     begin.countDown();
     try{
       end.await();      //等待end狀態(tài)變?yōu)?,即為比賽結(jié)束
     }catch (InterruptedException e) {
       // TODO: handle exception
       e.printStackTrace();
     }finally{
       System.out.println("Race ends!");
     }
     exe.shutdown();
   }
 }

接下來是Player類

import java.util.concurrent.CountDownLatch;
 
 
 public class Player implements Runnable {
 
   private int id;
   private CountDownLatch begin;
   private CountDownLatch end;
   public Player(int i, CountDownLatch begin, CountDownLatch end) {
     // TODO Auto-generated constructor stub
     super();
     this.id = i;
     this.begin = begin;
     this.end = end;
   }
 
   @Override
   public void run() {
     // TODO Auto-generated method stub
     try{
       begin.await();    //等待begin的狀態(tài)為0
       Thread.sleep((long)(Math.random()*100));  //隨機(jī)分配時間,即運(yùn)動員完成時間
       System.out.println("Play"+id+" arrived.");
     }catch (InterruptedException e) {
       // TODO: handle exception
       e.printStackTrace();
     }finally{
       end.countDown();  //使end狀態(tài)減1,最終減至0
     }
   }
 }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入理解Java遺傳算法

    深入理解Java遺傳算法

    這篇文章主要為大家詳細(xì)介紹了Java遺傳算法,本文對基因的編碼采用二進(jìn)制規(guī)則,分享了對Java遺傳算法的理解,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 關(guān)于@ConditionalOnProperty的作用及用法說明

    關(guān)于@ConditionalOnProperty的作用及用法說明

    這篇文章主要介紹了關(guān)于@ConditionalOnProperty的作用及用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 使用json字符串插入節(jié)點(diǎn)或者覆蓋節(jié)點(diǎn)

    使用json字符串插入節(jié)點(diǎn)或者覆蓋節(jié)點(diǎn)

    這篇文章主要介紹了使用json字符串插入節(jié)點(diǎn)或者覆蓋節(jié)點(diǎn)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java實(shí)現(xiàn)百度坐標(biāo)的摩卡托坐標(biāo)與火星坐標(biāo)轉(zhuǎn)換的示例

    java實(shí)現(xiàn)百度坐標(biāo)的摩卡托坐標(biāo)與火星坐標(biāo)轉(zhuǎn)換的示例

    這篇文章主要介紹了java實(shí)現(xiàn)百度坐標(biāo)的摩卡托坐標(biāo)與火星坐標(biāo)轉(zhuǎn)換的示例,需要的朋友可以參考下
    2014-03-03
  • springboot對接第三方微信授權(quán)及獲取用戶的頭像和昵稱等等

    springboot對接第三方微信授權(quán)及獲取用戶的頭像和昵稱等等

    這篇文章主要介紹了springboot對接第三方微信授權(quán)及獲取用戶的頭像和昵稱等等,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • IDEA的TODO的使用方式

    IDEA的TODO的使用方式

    這篇文章主要介紹了IDEA的TODO的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java 文件大數(shù)據(jù)Excel下載實(shí)例代碼

    java 文件大數(shù)據(jù)Excel下載實(shí)例代碼

    這篇文章主要介紹了java 文件大數(shù)據(jù)Excel下載實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java?IO模型之BIO、NIO、AIO三種常見IO模型解析

    Java?IO模型之BIO、NIO、AIO三種常見IO模型解析

    這篇文章主要介紹了今天我們來聊Java?IO模型,BIO、NIO、AIO三種常見IO模型,我們從應(yīng)用調(diào)用的過程中來分析一下整個IO的執(zhí)行過程,不過在此之前,我們需要簡單的了解一下整個操作系統(tǒng)的空間布局,需要的朋友可以參考下
    2024-07-07
  • SpringBoot獲取resources目錄下的文件

    SpringBoot獲取resources目錄下的文件

    在 Spring Boot 項(xiàng)目中,獲取 resources 目錄中的文件路徑通常涉及到訪問類路徑資源,Spring Boot 提供了一些工具類和方法,下面小編就來和大家詳細(xì)聊聊
    2024-10-10
  • SpringCache的基本使用方法

    SpringCache的基本使用方法

    Spring?Cache利用了AOP,實(shí)現(xiàn)了基于注解的緩存功能,并且進(jìn)行了合理的抽象,業(yè)務(wù)代碼不用關(guān)心底層是使用了什么緩存框架,只需要簡單地加一個注解,就能實(shí)現(xiàn)緩存功能了,本文介紹SpringCache的基本使用方法,感興趣的朋友一起看看吧
    2024-01-01

最新評論

茌平县| 大理市| 葫芦岛市| 杭州市| 巴青县| 岳阳县| 高邮市| 泰顺县| 高邮市| 禄丰县| 海城市| 兴业县| 龙胜| 吉首市| 英吉沙县| 桂阳县| 正定县| 宁陵县| 比如县| 洛隆县| 津南区| 洪雅县| 九龙坡区| 收藏| 保德县| 龙口市| 万源市| 高陵县| 玛多县| 西乌珠穆沁旗| 抚松县| 旅游| 常宁市| 广宁县| 孟州市| 慈溪市| 柞水县| 华宁县| 紫云| 镇安县| 丘北县|