Java併發程式設計實戰 總結

2021-08-05 18:40:28 字數 536 閱讀 5628

1.可變狀態是至關重要的。

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

2.盡量將域宣告為final型別,除非需要它們是可變的。

3.不可變物件一定是執行緒安全的。

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

4.封裝有助於管理複雜性。

在編寫執行緒安全的程式時,雖然可以將所有資料都儲存在全域性變數中,但為什麼要這樣做?

將資料封裝在物件中,更易於維持不變性條件:將同步機制封裝在物件,更易於遵守同步策略

5.用鎖來保護每個可變變數

6.當保護同乙個不變性條件中的所有變數時,要使用同乙個鎖。

7.在執行復合操作期間,要持有鎖。

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

9.不要自作聰明地推斷出不需要使用同步。

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

11.將同步策略文件化。

java併發程式設計實戰 簡介

1 併發和並行的區別 併發 多個程式在同一時間段執行,只有乙個cpu。並行 多個程式在同一時刻執行,有多個cpu。2 執行緒帶來的風險 1 安全性問題 永遠不發生糟糕的事情 兩個或多個執行緒同時訪問乙個變數,可能會出現差錯。例如,兩個執行緒同時對乙個變數執行讀操作,從而它們得到了相同的值,違背了該變...

《Java併發程式設計實戰》 5

每當看到new thread runnable start 時,並且你希望獲得一種更靈活的執行策略時,請考慮使用excecutor來代替thread。completionservice將execute和blockingqueue的功能融合在一起。executorcompletionservice實現...

《Java併發程式設計實戰》 7

並非所有的任務有些任務需要明確地指明執行策略,包括 在一些任務中,需要擁有或排除某種特定的執行策略。如果某些任務依賴於其他的任務,那麼會要求執行緒池足夠大,從而確保它們依賴任務不會被放入等待佇列中或者被拒絕,而採用執行緒封閉機制的任務需要序列執行。通過將這些需求寫入文件,將來的 維護人員就不會由於使...