日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 互聯(lián)網(wǎng) > Java并發(fā)學(xué)習(xí)之十七――線程同步工具之CountDownLatch

Java并發(fā)學(xué)習(xí)之十七――線程同步工具之CountDownLatch

來源:程序員人生   發(fā)布時間:2014-10-04 08:00:01 閱讀次數(shù):2959次

本文是學(xué)習(xí)網(wǎng)絡(luò)上的文章時的總結(jié),感謝大家無私的分享。

CountDownLatch的一個非常典型的應(yīng)用場景是:有一個任務(wù)想要往下執(zhí)行,但必須要等到其他的任務(wù)執(zhí)行完畢后才可以繼續(xù)往下執(zhí)行。假如我們這個想要繼續(xù)往下執(zhí)行的任務(wù)調(diào)用一個CountDownLatch對象的await()方法,其他的任務(wù)執(zhí)行完自己的任務(wù)后調(diào)用同一個CountDownLatch對象上的countDown()方法,這個調(diào)用await()方法的任務(wù)將一直阻塞等待,直到這個CountDownLatch對象的計數(shù)值減到0為止。

package chapter3; import java.util.concurrent.CountDownLatch; public class Videoconference implements Runnable{ private final CountDownLatch controller; public Videoconference(int number){ controller = new CountDownLatch(number); } public void arrive(String name){ System.out.println(name+" has arrived."); controller.countDown(); System.out.println("VideoConference:Waiting for "+controller.getCount()); } @Override public void run() { System.out.println("VideoConference:Initialization:"+controller.getCount()); try { controller.await(); System.out.printf("VideoConference: All the participants have come "); System.out.printf("VideoConference: Let's start... "); } catch (InterruptedException e) { e.printStackTrace(); } } }

package chapter3; import java.util.concurrent.TimeUnit; public class Participant implements Runnable{ private Videoconference conference; private String name; public Participant(Videoconference conference,String name){ this.conference = conference; this.name = name; } @Override public void run() { long duration = (long)(Math.random()*10); try { TimeUnit.SECONDS.sleep(duration); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } conference.arrive(name); } }

package chapter3; /** * * <p> * Description: CountDownLatch的學(xué)習(xí) * </p> * @author zhangjunshuai * @version 1.0 * Create Date: 2014-9-25 下午8:11:55 * Project Name: Java7Thread * * <pre> * Modification History: * Date Author Version Description * ----------------------------------------------------------------------------------------------------------- * LastChange: $Date:: $ $Author: $ $Rev: $ * </pre> * */ public class Main2 { /** * <p> * </p> * @author zhangjunshuai * @date 2014-9-25 下午8:11:50 * @param args */ public static void main(String[] args) { Videoconference conference = new Videoconference(9); Thread threadConference = new Thread(conference); threadConference.start(); for(int i=0;i<10;i++){ Participant p = new Participant(conference, "Participant"+i); Thread t = new Thread(p); t.start(); } } }

CountDownLatch類有3個基本元素:

  1. 初始值決定CountDownLatch類需要等待的事件的數(shù)量。
  2. await() 方法, 被等待全部事件終結(jié)的線程調(diào)用。
  3. countDown() 方法,事件在結(jié)束執(zhí)行后調(diào)用。

當(dāng)創(chuàng)建 CountDownLatch 對象時,對象使用構(gòu)造函數(shù)的參數(shù)來初始化內(nèi)部計數(shù)器。每次調(diào)用 countDown() 方法, CountDownLatch 對象內(nèi)部計數(shù)器減一。當(dāng)內(nèi)部計數(shù)器達(dá)到0時, CountDownLatch 對象喚醒全部使用 await() 方法睡眠的線程們。

不可能重新初始化或者修改CountDownLatch對象的內(nèi)部計數(shù)器的值。一旦計數(shù)器的值初始后,唯一可以修改它的方法就是之前用的 countDown() 方法。當(dāng)計數(shù)器到達(dá)0時, 全部調(diào)用 await() 方法會立刻返回,接下來任何countDown() 方法的調(diào)用都將不會造成任何影響。

此方法與其他同步方法有這些不同:

CountDownLatch 機(jī)制不是用來保護(hù)共享資源或者臨界區(qū)。它是用來同步一個或者多個執(zhí)行多個任務(wù)的線程。它只能使用一次。像之前解說的,一旦CountDownLatch的計數(shù)器到達(dá)0,任何對它的方法的調(diào)用都是無效的。如果你想再次同步,你必須創(chuàng)建新的對象。

CountDownLatch 類有另一種版本的 await() 方法,它是:

  • await(long time, TimeUnit unit): 此方法會休眠直到被中斷; CountDownLatch 內(nèi)部計數(shù)器到達(dá)0或者特定的時間過去了。TimeUnit 類包含了:DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, 和 SECONDS.

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品一区二区不卡 | 国产三级欧美三级 | 国产精品久久久av | youjizz日本人 | 欧美精品一区二区三区蜜臀 | 欧美精品在线视频 | 成人性生交大片免费观看嘿嘿视频 | 黄色大片在线免费看 | 国产欧美一区二区精品性色 | 黄色成人在线 | 99精品国产一区二区青青牛奶 | 99精品视频在线 | 国产欧美一区二区三区国产幕精品 | 久久久久久国产免费视网址 | 久久一二三四 | 国产精品久久久久久久久免费看 | 久久国产一区 | 91久久久久久久久久久 | 国产精品高潮呻吟久久 | 福利毛片| 亚洲免费网| 国产99久久| 欧美成人精品一区二区男人看 | 1717精品视频在线观看 | 国产suv一区| 国产精品久久综合 | 99在线视频精品 | 午夜精品久久久久久毛片 | 欧美日韩成人 | 欧美亚洲激情视频 | 欧美亚洲免费 | 日韩美女一区 | 美女航空一级毛片在线播放 | 久久免费国产 | 国产精品又黄又爽又色 | 欧美性一区二区三区 | 999免费| 欧美另类视频在线 | 日韩在线一区二区 | 国产精品一区二区三区久久久 | 成人在线一区二区三区 |