1. 程式人生 > >Java 併發程式設計實戰 第一部分小結

Java 併發程式設計實戰 第一部分小結

下列"併發技巧清單" 列舉了第一部分介紹的概念和規則


* 可變狀態是直觀重要的(it's mutable state, stupid)

    所有的併發問題都可以歸結為如何協調對併發狀態的訪問,可變狀態越少,就越容易確保執行緒的安全性。

* 儘量將域宣告為final型別,除非需要他們是可變的

* 不可變物件一定是執行緒安全的

    不可變物件極大地降低併發程式設計的複雜性,他們更為簡單而且安全,可以任意共享而無需使用枷鎖或保護性機制

* 封裝有助於管理複雜性

    在編寫現車功能安全的程式時,雖然可以將所有的資料都儲存在全域性變數中,但為什麼要這樣做?將資料封裝在物件中,更易於維持不變性條件;將同步機制封裝在物件當中,更加易於遵循同步策略

* 用鎖來保護每一個可變變數

* 當保護同一個不變性條件中的所有變數時, 要使用用一個鎖

* 在執行符合操作期間,要持有鎖

* 如果從多個執行緒中訪問同一個可變變數時沒有同步機制,那麼程式會出現問題,

* 不要做故作聰明的推斷出不需要使用同步。

* 在設計過程中,考慮執行緒安全,或者在文件中明確的指出它不是執行緒安全的。

* 將同步策略文件化。



注:文件提到了多種同步方案,並解釋了為什麼有的行不通,以後補充上