差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:effective_java:concurrency:avoid_excessive_synchronization [2020/02/19 01:02]
tony [Introduction]
java:effective_java:concurrency:avoid_excessive_synchronization [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​java effective_java java_concurrency}} +
-====== Effective Java - Avoid excessive synchronization ====== +
-===== Introduction ===== +
-這個Item的宗旨如字面上的意思:​「避免過度的使用synchronized」。Effective Java在這個Item中有以下幾個重點:​ +
-  * 有使用synchronized控制的method,不要讓client有機會override以避免liveness與safety failures。 +
-  * synchronized block中,為了效能著想,工作越少越好。 +
-  * 善用同步的方法,沒有需要就不要用。 +
-首先針對第一點,可以用以下範例做說明:​ +
-<code bash> +
-public class ObservableSet<​E>​ extends ForwardingSet<​E>​ { +
-  public ObservableSet(Set<​E>​ set) { super(set); } +
-  private final List<​SetObserver<​E>>​ observers= new ArrayList<>​();​ +
-  public void addObserver(SetObserver<​E>​ observer) { +
-    synchronized(observers) { +
-      observers.add(observer);​ +
-    } +
-  } +
-  public Boolean removeObserver(SetObserver<​E>​ observer) { +
-    synchronized(observers) { +
-      return observers.remove(observer);​ +
-    } +
-  } +
-+
-</​code>​ +
-由於addObserver與removeObserver都可以override, +
-===== Note ===== +
-Effective Java第三版Item 79。 +
-===== Reference ===== +
-  * Effective Java, 3/e +
-=====    ===== +
----- +
-\\ +
-~~DISQUS~~+