減法計數器:
public
class
countdownlatchdemo
,string.
valueof
(i))
.start()
;}countdownlatch.
await()
;// 等待計數器歸零,然後再向下執行
system.out.
println
("close door");
}}
原理:
countdownlatch.countdown();// 數量-1
countdownlatch.await();// 等待計數器歸零,然後再向下執行
每次有執行緒呼叫 countdown() 數量-1,假設計數器變為0,countdownlatch.await() 就會被喚醒,繼續
執行!加法計數器:
public
class
cyclicbarrierdemo);
for(
int i =
1; i <=
7; i++
)catch
(interruptedexception e)
catch
(brokenbarrierexception e)})
.start()
;}}}
訊號量:搶車位!6車—3個停車位置
public
class
semaphoredemo
catch
(interruptedexception e)
finally
},string.
valueof
(i))
.start()
;}}}
原理:
semaphore.acquire():獲得,假設如果已經滿了,等待,等待被釋放為止!
semaphore.release();釋放,會將當前的訊號量釋放 + 1,然後喚醒等待的執行緒!
JUC 常用輔助類
public class countdemo string.valueof i start cd.await system.out.println thread.currentthread getname t班長離開教室 countdownlatch在初始化時傳入乙個數值,通過cd.countdow...
JUC包下的常用多執行緒輔助類
允許乙個或多個執行緒等待直到在其他執行緒中執行的一組操作完成的同步輔助。countdownlatch用給定的計數初始化。await方法阻塞,直到由於呼叫countdown 方法,當前計數達到零,此後所有等待執行緒被釋放,並且任何後續的呼叫await立即返回。這是乙個一次性的現象 計數無法重置。場景舉...
JUC 輔助工具類
countdownlatch 假設這樣的乙個場景 你是圖書館管理員 現在還有五個人在圖書館中怎麼保證五個人都走完的時候進行鎖門 cyclicbarrier 鎖完門 下了班 你邀請一些朋友一起吃飯 有人提早就到 有人會準點到只有人齊了才開始吃飯 cyclicbarrier 和 countdownlat...