atomic包
輕量級(jí)無(wú)鎖原子同步工具包,提供多個(gè)原子型基本數(shù)據(jù)結(jié)構(gòu)封裝(AtomicBoolean咙鞍、AtomicInteger等)锈麸,用于支持原子級(jí)別的線程安全讀寫(xiě),適用于全局狀態(tài)共享同步帐姻。
CountDownLatch
倒計(jì)數(shù)阻塞器稠集,初始數(shù)字倒計(jì)到 0 時(shí),被其阻塞的線程將被放行并繼續(xù)工作饥瓷,主要用于主線程需要等待多個(gè)子線程執(zhí)行完畢并返回結(jié)果的場(chǎng)景剥纷。
CountDownLatch 變量通常存在于主線程對(duì)象內(nèi)。
CountDownLatch 只能一次性使用扛伍,倒計(jì)數(shù)到達(dá) 0 時(shí)筷畦,CountDownLatch 對(duì)象將永久失去阻塞效果。
主要方法
- await():阻塞當(dāng)前線程(通常為主線程)
- countDown():初始數(shù)字減少 1 (代表其中一項(xiàng)子線程執(zhí)行完畢)
CyclicBarrier
環(huán)形阻攔器刺洒,初始數(shù)字倒計(jì)到 0 時(shí),所有被阻塞的線程將被同時(shí)放行并開(kāi)始工作吼砂,主要用于多個(gè)線程需要等待同一時(shí)刻并發(fā)執(zhí)行的場(chǎng)景逆航。
CyclicBarrier 變量通常被所有阻塞線程共享。
CyclicBarrier 可重復(fù)使用渔肩,初始數(shù)字倒計(jì)到 0 時(shí)再次調(diào)用 await()
方法因俐,初始數(shù)字將回歸原始狀態(tài)并進(jìn)入新一輪阻塞過(guò)程。
CyclicBarrier 在功能上可與 CountDownLatch 交換使用周偎。
主要方法
- await():當(dāng)前線程加入到阻塞列表抹剩,初始數(shù)字減少 1 (表示其中一項(xiàng)子線程準(zhǔn)備就緒)
Semaphore
信號(hào)量,用于設(shè)置定量的許可數(shù)量蓉坎,通過(guò)獲取澳眷、釋放許可的方式,控制可同時(shí)執(zhí)行的線程數(shù)量(并發(fā)數(shù)控制)蛉艾。
主要方法
- acquire():獲取執(zhí)行許可權(quán)限钳踊,未得到許可前當(dāng)前線程將被阻塞
- tryAcquire():非阻塞式獲取執(zhí)行許可,未得到許可將立即返回 false
- release():釋放許可權(quán)限勿侯,回收到權(quán)限池