发包工具_java并发包工具类
1. CountDownLatch(線程計數(shù)器 )
CountDownLatch類位于java.util.concurrent 包下,利用它可以實現(xiàn)類似計數(shù)器的功能。比如有一個任務(wù) A,它要等待其他 4 個任務(wù)執(zhí)行完畢之后才能執(zhí)行,此時就可以利用 CountDownLatch來實現(xiàn)這種功能了。
2. CyclicBarrier(回環(huán)柵欄-等待至 barrier 狀態(tài)再全部同時執(zhí)行)
字面意思回環(huán)柵欄,通過它可以實現(xiàn)讓一組線程等待至某個狀態(tài)之后再全部同時執(zhí)行。叫做回環(huán)是因為當(dāng)所有等待線程都被釋放以后,CyclicBarrier 可以被重用。我們暫且把這個狀態(tài)就叫做barrier,當(dāng)調(diào)用 await()方法之后,線程就處于 barrier 了。 CyclicBarrier 中最重要的方法就是 await 方法,它有 2 個重載版本:
3. Semaphore(信號量-控制同時訪問的線程個數(shù))
Semaphore 翻譯成字面意思為 信號量,Semaphore 可以控制同時訪問的線程個數(shù),通過acquire() 獲取一個許可,如果沒有就等待,而 release() 釋放一個許可。 Semaphore 類中比較重要的幾個方法:
例子:若一個工廠有5 臺機器,但是有8個工人,一臺機器同時只能被一個工人使用,只有使用完 了,其他工人才能繼續(xù)使用。那么我們就可以通過 Semaphore 來實現(xiàn):
注: CountDownLatch 和 CyclicBarrier 都能夠?qū)崿F(xiàn)線程之間的等待,只不過它們側(cè)重點不同; CountDownLatch 一般用于某個線程 A 等待若干個其他線程執(zhí)行完任務(wù)之后,它才執(zhí)行; 而 CyclicBarrier 一般用于一組線程互相等待至某個狀態(tài),然后這一組線程再同時執(zhí)行; 另外,CountDownLatch 是不能夠重用的,而 CyclicBarrier 是可以重用的。 Semaphore 其實和鎖有點類似,它一般用于控制對某組資源的訪問權(quán)限。
總結(jié)
以上是生活随笔為你收集整理的发包工具_java并发包工具类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: element ui怎么调图标的大小_大
- 下一篇: 标题在图表上_从零开始学Excel——标