JUC 第7章JUC強大的輔助類講解
第7章?JUC強大的輔助類講解
1.?ReentrantReadWriteLock讀寫鎖
類似軟件:紅蜘蛛
程序代碼:
,
2.?CountDownLatch減少計數
? ? 2.1? 原理
CountDownLatch主要有兩個方法,當一個或多個線程調用await方法時,這些線程會阻塞。
其它線程調用countDown方法會將計數器減1(調用countDown方法的線程不會阻塞),當計數器的值變為0時,因await方法阻塞的線程會被喚醒,繼續執行。
? ? 2.2? 程序代碼
3.?CyclicBarrier循環柵欄
? ? 3.1? 原理
CyclicBarrier的字面意思是可循環(Cyclic)使用的屏障(Barrier)。它要做的事情是,讓一組線程到達一個屏障(也可以叫同步點)時被阻塞,直到最后一個線程到達屏障時,屏障才會開門,所有被屏障攔截的線程才會繼續干活。線程進入屏障通過CyclicBarrier的await()方法。
? ?3.1? 程序代碼
4.?Semaphore信號燈
? ? 4.1 原理
在信號量上我們定義兩種操作:
??acquire(獲取) 當一個線程調用acquire操作時,它要么通過成功獲取信號量(信號量減1),要么一直等下去,直到有線程釋放信號量,或超時。
?release(釋放)實際上會將信號量的值加1,然后喚醒等待的線程。信號量主要用于兩個目的,一個是用于多個共享資源的互斥使用,另一個用于并發線程數的控制。
? ?4.1? 程序代碼