從0學習java併發編程實戰-讀書筆記-第一部分總結(5)

總結的內容來自原文的90-91頁

  • 可變狀態是相當重要的。編程

    • 全部的併發問題均可以歸結爲如何協調對併發狀態的訪問。可變狀態越少,越容易確保線程安全性。
  • 儘可能將域聲明爲final類型,除非須要它們是可變的。
  • 不可變對象必定是線程安全的。安全

    • 不可變對象能極大的下降併發編程的複雜性。它們更爲簡單並且安全,能夠任意共享而無需使用加鎖或保護性複製等機制。
  • 封裝有助於管理複雜性。併發

    • 在編寫線程安全的程序時,雖然能夠將全部數據都保存在全局變量中,但爲何要這樣作?將數據封裝在對象中,更易於維持不變性條件:將同步機制封裝在對象中,更易於遵循同步策略。
  • 用鎖來保護每一個可變對象。
  • 當保護同一個不變性條件中的全部變量時,要用同一個鎖。
  • 在執行復合操做期間,要持有鎖。
  • 若是從多個線程中訪問同一個可變變量時沒有同步機制,那麼程序會出現問題。
  • 不要故做聰明的推斷出不須要使用同步。
  • 在設計過程當中考慮線程安全,或者在文檔中明確指出它不是線程安全的。
  • 將同步策略文檔化。
相關文章
相關標籤/搜索