日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java并发工具类(闭锁CountDownLatch)

發(fā)布時間:2025/7/14 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java并发工具类(闭锁CountDownLatch) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

并發(fā)工具類系列:

Java并發(fā)工具類(閉鎖CountDownLatch)

Java并發(fā)工具類(柵欄CyclicBarrier)

Java并發(fā)工具類(信號量Semaphore)

閉鎖是一種同步工具類,可以延遲線程的進度直到其到達終止狀態(tài)。

CountDownLatch是一種靈活的閉鎖實現(xiàn),它可以使一個或者多個線程等待一組事件的發(fā)生。

閉鎖狀態(tài)包含一個計數(shù)器,該計數(shù)器被初始化為一個正數(shù),表示需要等待的事件數(shù)量。countDown方法遞減計數(shù)器,表示已經(jīng)有一個事件已經(jīng)發(fā)生了。而await方法等待計數(shù)器達到0,這表示所有需要等待的事件都已經(jīng)發(fā)生。如果計數(shù)器的值非0,那么await會一直阻塞直到計數(shù)器為0,或者等待中的線程中斷或者超時。 下面,我們以經(jīng)典的運動員賽跑舉例:

我們在這里設置了兩個門,一個是開始門,一個是結束門。

  • 開始門: 所有運動員處于準備狀態(tài),等待教練的槍聲。這時候運動員為n個,槍響只需要一聲,等待的這一聲槍響到了,開始門也就打開了,所有運動員開始跑。
  • 結束門: 教練等待所有運動員,當最后一個運動員也沖破底線,教練才能宣布所有人到達終點,這時候是教練等待n個運動員,直到n為0。

下面我們根據(jù)具體的代碼來演示CountDownLatch的用法:

package concurrency;import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit;class Runner implements Runnable {private static int counter = 0;private final int id = counter++;private static Random rand= new Random(47);private final CountDownLatch start_latch;private final CountDownLatch end_latch;public Runner(CountDownLatch start_latch, CountDownLatch end_latch) {this.start_latch = start_latch;this.end_latch = end_latch;}@Overridepublic void run() {try {start_latch.await(); //所有運動員都在準備狀態(tài)中,等待教練釋放開始門try {doWork(); //每個人跑步的時間不同end_latch.countDow n(); //跑完后,告訴教練跑完了} catch (InterruptedException e) {System.out.println("Interrupted Runner" + id);}} catch (InterruptedException e) {System.out.println("Interrupted Runner" + id);}}public void doWork() throws InterruptedException {TimeUnit.MILLISECONDS.sleep(rand.nextInt(2000));System.out.println(this + "completed");}@Overridepublic String toString() {return String.format("%1$-3d", id);} }class Coach implements Runnable {private final CountDownLatch start_latch;private final CountDownLatch end_latch;public Coach(CountDownLatch start_latch, CountDownLatch end_latch) {this.start_latch = start_latch;this.end_latch = end_latch;}@Overridepublic void run() {start_latch.countDown(); //教練釋放了開始門,運動員們都開始跑System.out.println("Coach say: Ready!!!! Go!!!!");try {end_latch.await(); //當結束門的count down減為0時,教練宣布所有人都跑完了。System.out.println("All runner passed the end point");} catch (InterruptedException ex) {System.out.println(this + " interrupted");}} }public class TestRunner {private static final int SIZE = 10;public static void main(String[] args) {ExecutorService exec = Executors.newCachedThreadPool();CountDownLatch startGate = new CountDownLatch(1);CountDownLatch endGate = new CountDownLatch(SIZE);for (int i = 0; i < SIZE; i++) {exec.execute(new Runner(startGate, endGate));}exec.execute(new Coach(startGate, endGate));exec.shutdown();} } 復制代碼

CountDownLatch強調(diào)的是一個線程(或多個)需要等待另外的n個線程干完某件事情之后才能繼續(xù)執(zhí)行。 上述例子,Coach線程是裁判,10個Runner是跑步的。運動員先準備,裁判喊跑,運動員才開始跑(這是第一次同步,對應startGate)。10個人誰跑到終點了,countdown一下,直到10個人全部到達,裁判喊停(這是第二次同步,對應endGate)。 最后運行結果如下:

Coach say: Ready!!!! Go!!!! 7 completed 9 completed 5 completed 8 completed 2 completed 0 completed 6 completed 4 completed 1 completed 3 completed All runner passed the end point

總結

以上是生活随笔為你收集整理的Java并发工具类(闭锁CountDownLatch)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: h片在线观看网站 | 在线日韩亚洲 | 成人性生交大片免费 | 亚洲一区二区三区在线看 | 国产视频二区 | 中文字幕观看视频 | 亚洲精品97久久中文字幕 | 国产福利在线观看 | 欧美老肥妇做.爰bbww视频 | 高h教授1v1h喂奶 | 视频免费1区二区三区 | 在线观看黄网址 | 婷婷综合影院 | 超碰97人人射妻 | 中文久久久 | 91国内精品野花午夜精品 | 成人免费福利视频 | 秋霞午夜| 日韩欧美一区二区一幕 | 国产毛片高清 | 天堂av2020 | 欧美熟妇精品一区二区蜜桃视频 | 国产网红无码精品视频 | 在线看免费毛片 | 911国产在线 | 精品一区二区三区免费毛片爱 | 久久大尺度 | 国产成人毛片 | 一区二区亚洲视频 | 色秀视频在线观看 | 欧美三级 欧美一级 | 天堂av免费看 | 欧美aaaaaaaaaa| 亚洲视频久久久 | 精品成人网 | 夫妻精品 | 玩偶姐姐在线看 | wwwxxx在线播放 | 91激情 | 136福利视频导航 | 美女色诱男人激情视频 | 亚洲天堂一二三 | 成 人 免费 黄 色 | 欧美一区二区高清 | 亚洲成人免费网站 | 歪歪视频在线观看 | 国产伦精品一区二区三区高清 | 亚洲天堂视频在线 | 国精品一区二区 | 性欧美8khd高清极品 | 日韩成人激情 | 污视频网站入口 | 91麻豆蜜桃一区二区三区 | 蜜臀av性久久久久蜜臀av麻豆 | 91偷拍一区二区三区精品 | 国产精品成人免费视频 | 91九色在线观看 | 蜜臀av无码精品人妻色欲 | 亚洲特级黄色片 | 国产精品人人爽人人爽 | a级黄色小说 | 黄色免费在线观看视频 | 在线观看网页视频 | 日韩成人免费电影 | 欧美成人自拍视频 | 狠狠做深爱婷婷久久综合一区 | 美日韩一区二区 | 国产激情第一页 | 性欧美bb| 国产成人精品免费网站 | 国精产品99永久一区一区 | 蜜臀久久99静品久久久久久 | xxx久久| 日韩精品在线看 | 国产真实交换夫妇视频 | 国模少妇一区二区三区 | 伊人久久免费 | 五月激情在线观看 | 木下凛凛子av一区二区三区 | 精品久久国产字幕高潮 | 成人涩涩 | 成 人免费va视频 | 日韩一级伦理片 | 三级网站在线免费观看 | 国产精品国产 | 久草免费在线色站 | 女人一区二区 | 久久久九九九热 | 欧美片免费网站 | 91精品国产aⅴ一区二区 | 欧美色老头 | 色香蕉在线 | 一本大道av | 日韩欧美电影一区二区三区 | 亚洲精品成人区在线观看 | a资源在线 | 美女二区 | 久久777 | 欧美激情欧美激情在线五月 |