Java7併發程式設計 3 執行緒同步輔助類

2021-07-16 12:03:25 字數 796 閱讀 7456

常用的同步有synchronized關鍵字、lock介面以及實現類,如reentrantlock、reentrantreadwritelock中的readlock和writelock。

在本章中將以以下幾個更高階的同步機制來實現多執行緒的同步。

是一種計數器,用來保護乙個或則多個共享資源的訪問,它是併發程式設計的一種基礎工具,大多數程式語言都提供了這個機制 

簡要場景用途:允許同時n個執行緒訪問某乙個資源

乙個同步輔助類,在完成一組正在其他執行緒中執行的操作之前,它允許乙個或多個執行緒一直等待。 

簡要場景用途: 有乙個或則n個執行緒需要 依賴 某乙個或則n個執行緒執行的結果,拿到結果後,再進行計算

乙個同步輔助類,它允許一組執行緒互相等待,直到到達某個公共屏障點 (common barrier point)。因為該 barrier 在釋放等待執行緒後可以重用,所以稱它為迴圈 的 barrier。 

簡要場景用途: 有一段**需要等待乙個或則n個執行緒到達乙個指定點再執行,或則 有乙個執行緒需要等待乙個或則n個執行緒到底某乙個點,這個執行緒才能被執行。

乙個同步輔助類,類似cyclicbarrier的關卡屏障,但是比它更加靈活,它把併發任務分成多個階段執行,在開始下乙個階段之前,當前階段中的所有執行緒都必須執行完成。 

簡要場景用途:這個更強大,除了能實現2,3的功能外,沒法一句話描述清楚

乙個同步輔助類,提供了兩個執行緒之前的資料交換點。 

簡要場景用途:用於兩個執行緒消費者和生產者之間的資料交換。

在應用程式中,任何時候都可以使用semaphore來保護臨界區,而其他的輔助類則需要根據各自的特性來選擇合適的使用場景。

JAVA7併發程式設計手冊筆記

isinterrupted 不能改變interrupted屬性值,只是返回這個屬性的值 thread類的靜態方法interrupted設定interrupted屬性為false。推薦使用isinterrupted deuqe 雙端佇列 uncaughtexceptionhandler介面 實現 un...

Java7併發程式設計實戰(一) 執行緒的管理

1 繼承thread類,並且覆蓋run 方法 2 建立乙個實現runnable介面的類。使用帶引數的thread構造器來構造 2 example 計算列印乘法表 首先建立乙個calculator類,實現runnable介面 public class calculator implements run...

Java7併發程式設計實戰(一) 執行緒的等待

試想乙個情景,有兩個執行緒同時工作,還有主線程,乙個執行緒負責初始化網路,乙個執行緒負責初始化資源,然後需要兩個執行緒都執行完畢後,才能執行主線程 首先建立乙個初始化資源的執行緒 public class datasourcesloader implements runnable catch int...