允許乙個或多個執行緒等待直到在其他執行緒中執行的一組操作完成的同步輔助。
乙個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...