天天看點

Java并發程式設計實踐筆記之——活躍性和性能(Liveness and Performance)

将整個方法加synchronized,每次隻能有一個線程執行,在伺服器負載過高的情況下

  • 使用者的請求要排隊等待處理(比如要做長時間的計算),給使用者帶來糟糕的體驗。也就是并發性差
  • 而且仍會有CPU處于空閑狀态

縮小同步代碼塊的範圍

  • 盡量将不影響共享狀态且執行時間較長的操作從同步代碼塊中分離出去,一定不要持有鎖
  • 如果使用了同步代碼塊,就不要再重複使用AtomicLong之類的原子變量,使用兩種不同的機制會帶來混亂和性能及安全上的問題
  • 設計同步代碼塊大小的時候,要在簡單(對整個方法進行同步)和性能(并發性)之間找到合理的平衡。一定不能為了性能犧牲安全性