(13)倒計時器和迴圈柵欄

2021-09-23 22:06:38 字數 2689 閱讀 1351

允許乙個或多個執行緒等待直到在其他執行緒中執行的一組操作完成的同步輔助。

乙個countdownlatch用給定的計數初始化。await()方法阻塞,直到由於countdown()方法的呼叫而導致當前計數達到零,之後所有等待執行緒被釋放,並且任何後續的await()呼叫立即返回。 這是乙個一次性的現象 - 計數無法重置。

建構函式

該類只有乙個建構函式

public

countdownlatch

(int count)

方法

public

long

getcount()

//獲取當前的計數

public

void

countdown()

//減少當前計數

public

void

await()

throws interruptedexception //使當前執行緒,等在倒計時器上,等待被喚醒

public

boolean

await

(long timeout, timeunit unit)

throws interruptedexception

示例

倒計時器是一次性的,不能重置,

public

class

countdownlatchdemo

implements

runnable

catch

(interruptedexception e)

}public

static

void

main

(string[

] args)

throws interruptedexception

for(

int i =

0; i <

3; i++

)catch

(interruptedexception e)

system.out.

println

("跳傘!");

});}

}}

執行結果如下:

check complete

check complete

check complete

check complete

check complete

check complete

check complete

check complete

check complete

check complete

跳傘!跳傘!

跳傘!

允許一組執行緒全部等待彼此達到共同屏障點的同步輔助。 迴圈阻塞在涉及固定大小的執行緒方的程式中很有用,這些執行緒必須偶爾等待彼此。 屏障被稱為迴圈 ,因為它可以在等待的執行緒被釋放之後重新使用。

構造方法

// parties表示計數總數

public

cyclicbarrier

(int parties)

// barrieraction 表示當計數器一次計數完成後,系統會執行的動作

public

cyclicbarrier

(int parties, runnable barrieraction)

方法

// 等待所有 parties已經在這個障礙上呼叫

public

intawait()

// 查詢這個障礙是否處於破碎狀態。

public

boolean

isbroken()

// 將屏障重置為初始狀態

public

void

reset

()

示例

public

class

cyclicbarrierdemo

@override

public

void

run(

)catch

(interruptedexception e)

catch

(brokenbarrierexception e)}}

public

static

class

barrierrun

implements

runnable

}public

static

void

main

(string[

] args)

}}

執行結果:

集合!

0號報道

1號報道

2號報道

3號報道

4號報道

5號報道

6號報道

7號報道

8號報道

9號報道

集合完畢,出發!

倒計時器 CountDownLatch

countdownlatch是乙個非常實用的多執行緒控制工具類。常用的就下面幾個方法 countdownlatch int count 例項化乙個倒計數器,count指定計數個數 countdown 計數減一 await 等待,當計數減到0時,所有執行緒並行執行countdownlatch在我工作的...

發言倒計時器 單面會議計時器 會議發言倒計時器

單面會議倒計時器 說明 1.單面 控制按鈕700元 2.單面 控制按鈕 搖控800元 3.單面 控制按鈕 搖控 三腳支架1000元 以上 都是不含稅不含運費的 會議計時器功能 可以任意設定發言時長 高99分59秒 設定會議計提醒時間 以分鐘為單位,1 99分鐘 提醒音為滴滴滴的聲音,發言結束音為叮咚...

倒計時器原始碼

package android.os import android.util.log public abstract class countdowntimer public final void cancel public synchronized final countdowntimer star...