併發程式設計實戰筆記 第2章

2021-09-10 17:54:44 字數 396 閱讀 5967

1、無狀態的物件一定是執行緒安全的。

2、不恰當的執行時序,出現不正確的結果,定義為競態條件。

3、單狀態變數,使用原子型別

4、多狀態變數互動,使用synchronzied,包括2部分,1、要鎖定的物件 2、要保護的**塊。

被保護的**塊,操作可看成乙個事務。

5、內建鎖是可重入的,也就是自己去獲取自己已經獲得了鎖的鎖的時候,可以獲得。

6、一種加鎖約定:將所有可變物件都放入物件內部,通過內部鎖來加持所有涉及可變物件的操作。

7,內部鎖可以確保單個函式或**塊的原子性,但當多個內部鎖保護的函式一塊組成操作時,也許加鎖保護。

8、要仔細權衡鎖的大小,太大,影響效能。太小會打不成同步目的,或徒增複雜度。

要在安全性,效能,簡單性這3個方面做平衡。

《java併發程式設計實戰》筆記(第4章)

十九 設計執行緒安全的類 在設計執行緒安全類的過程中,需要包含以下三個基本要素 1.找出構成物件狀態的所有變數 2.找出約束狀態變數的不變性條件 3.建立物件狀態的併發訪問管理策略。19.1 設計執行緒安全的類 1.類的不變性條件和後驗條件約束了在物件上有哪些狀態和狀態轉換是有效的。2.某些方法還包...

併發程式設計 第2章

有件事需要注意,當把函式物件傳入到執行緒建構函式中時,需要避免 最令人頭痛的語法解析 c s most vexing parse 中文簡介 如果你傳遞了乙個臨時變數,而不是乙個命名的變數 c 編譯器會將其解析為函式宣告,而不是型別物件的定義。例如 std thread my thread backg...

學習筆記 併發程式設計實戰 第3章 物件的共享

乙個共享變數被乙個執行緒修改後,另外乙個執行緒能夠正確的獲取到共享變數最新值,此共享變數具有可見性。缺乏同步的共享變數,在多執行緒訪問中,就可能獲取到失效資料,從而導致不可預見的錯誤。正常情況下,即使是非同步變數,不同執行緒獲取到的不是最新資料,為失效資料,但至少它是之前存在過的值,這個值曾經出現過...