差異處

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

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
java:effective_java:concurrency:avoid_thread_groups [2020/01/28 01:03]
tony [Introduction]
java:effective_java:concurrency:avoid_thread_groups [2020/01/28 01:29]
tony
行 1: 行 1:
 +{{tag>​java effective_java java_concurrency}}
 ====== Effective Java - Avoid thread groups ====== ====== Effective Java - Avoid thread groups ======
 ===== Introduction ===== ===== Introduction =====
-我會特別記錄這個Item,是由於我閱讀Java高併發編程詳解時,有個章節專門這個項目。 +我會特別記錄這個Item,是由於我閱讀Java高併發編程詳解:多線程與架構設計時,有個章節專門ThreadGroup的功用;但我想起曾經在Effective Java中,看到不建議使用它,所以我重翻了Effective Java第二版與Java Threads第三版我針對看到的內容做一下整理分享給大家。\\ 
- +\\
 作者認為ThreadGroup的API太弱,沒什麼實質用途,主要為以下幾點原因:​ 作者認為ThreadGroup的API太弱,沒什麼實質用途,主要為以下幾點原因:​
   * ThreadGroup原始目的是用來隔離applet,用以限制Thread是否有能力存取其它Thread的狀態;但這並沒被履行過,且Applet已經被廢了。   * ThreadGroup原始目的是用來隔離applet,用以限制Thread是否有能力存取其它Thread的狀態;但這並沒被履行過,且Applet已經被廢了。
   * stop、suspend、resume被廢了。   * stop、suspend、resume被廢了。
   * 在Java 1.5之前,只有ThreadGroup才有能力去處理Thread例外,但現在Thread本身就有。   * 在Java 1.5之前,只有ThreadGroup才有能力去處理Thread例外,但現在Thread本身就有。
 +  * 要取得active的thread必須透過enumerate method,而且因為同步存取的關係,不保證正確性。 
 +\\ 
 +在Java Threads第三版中,針對ThreadGroup提到,使用它有兩個好處:​ 
 +  * 提供你對group中所有的thread便利地一次操作,不過現在會有用的應該只有interrupt。 
 +  * 控制thread狀態存取的安全性,就是Effective Java作者反對的那點。 
 +然而第一點的好處,似乎使用executor的API就能做到了,所以..\\ 
 +\\ 
 +話不能說死,如果以後我真的有使用或看到ThreadGroup使用方法,再分享給大家。
 ===== Note ===== ===== Note =====
 Effective Java第二版Item 73,但不知什麼原因在第三版消失了。 Effective Java第二版Item 73,但不知什麼原因在第三版消失了。
 +===== Reference ===== 
 +  * Effective Java, 2/e 
 +  * Java高併發編程詳解:多線程與架構設計,​ 汪文君 
 +  * Java Threads, 3/e 
 +=====    ===== 
 +---- 
 +\\ 
 +~~DISQUS~~