JavaRush /Java Blog /Random-TW /執行緒組
Core
等級 35
Екатеринбург

執行緒組

在 Random-TW 群組發布
下午好,新年快樂!幫助我更多地了解多線程,即ThreadGroup。我用谷歌搜尋、閱讀並理解了主要本質:目的是安全性,透過團體的組織進行整合管理。
出於可管理性和安全性的原因,線程被分成線程組。一個執行緒組可以屬於另一組,形成一個層次結構,主(系統)組位於頂層。屬於一個群組的執行緒可以同時受到控制 - 您有權立即中斷該群組中所有執行緒的工作或為它們設定單一最大執行優先權值。線程組也可用於定義安全域。組內的線程通常被賦予相互影響的可能性,這種情況也延伸到嵌套組的線程上。當我們說「影響」時,我們的意思是任何方法呼叫都可以影響執行緒的行為,例如更改其優先順序或導致中斷。
(來源:Tyts
為了防止單一線程連續啟動停止和中斷所有線程,引入了群組的概念。線程只能影響與其屬於同一組的線程。線程組由 ThreadGroup 類別表示。該組織允許您保護流免受不必要的外部影響。線程組可以包含其他組,從而允許將所有線程和群組組織成一棵分層樹,其中每個 ThreadGroup 物件(根物件除外)都有一個父物件。
(來源:Tyts)在閱讀各種文章後,我決定寫一段小程式碼,在其中我無法從一個群組的一個執行緒中斷另一個群組的流程。但有些事情沒有成功:它允許我中斷((( 我的程式碼: 為什麼可以中斷?這是輸出: public class Test { public static ArrayList threads = new ArrayList (); public static ArrayList groups = new ArrayList (); public static void main(String[] args) throws InterruptedException { final ThreadGroup group1 = new ThreadGroup("GROUP 1"); final ThreadGroup group2 = new ThreadGroup("GROUP 2"); final ThreadGroup group3 = new ThreadGroup("GROUP 3"); groups.add(group1); groups.add(group2); groups.add(group3); for (int i = 0; i < groups.size(); i++) { for (int j = 1; j < 5; j++) { Thread thread = new Thread(groups.get(i), "THREAD №" + j) { @Override public void run() { while (!isInterrupted()) { try { Thread.sleep(500); } catch (InterruptedException e) { System.out.println(getName() + " : " + getThreadGroup().getName() + " прервана"); } } } }; threads.add(thread); thread.start(); } } Thread thread = new Thread(group1, "THREAD №5") { @Override public void run() { group2.interrupt(); while (true); } }; thread.start(); threads.add(thread); for (Thread t : threads) System.out.println(t); } } Thread[THREAD №1,5,GROUP 1] Thread[THREAD №2,5,GROUP 1] Thread[THREAD №3,5,GROUP 1] Thread[THREAD №4,5,GROUP 1] Thread[THREAD №1,5,GROUP 2] Thread[THREAD №2,5,GROUP 2] Thread[THREAD №3,5,GROUP 2] Thread[THREAD №4,5,GROUP 2] Thread[THREAD №1,5,GROUP 3] Thread[THREAD №2,5,GROUP 3] Thread[THREAD №3,5,GROUP 3] Thread[THREAD №4,5,GROUP 3] Thread[THREAD №5,5,GROUP 1] THREAD №1 : GROUP 2 прервана THREAD №2 : GROUP 2 прервана THREAD №4 : GROUP 2 прервана THREAD №3 : GROUP 2 прервана
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION