Java多執行緒-54-ThreadGroup執行緒組
阿新 • • 發佈:2019-01-13
前面學習了多執行緒幾個例子,有兩個執行緒,三個執行緒。執行緒多了,就需要有東西去管理執行緒。所以,很多執行緒的情況下,可以分組去管理。這篇就學習一個類叫ThreadGroup,執行緒組類。
1.執行緒組的概述
Java中使用ThreadGroup來表示執行緒組,它可以對一批執行緒進行分類管理,Java執行程式直接對執行緒組進行控制。預設情況下,所有的執行緒都屬於主執行緒。
關於預設屬於主執行緒,我們用下來程式碼來舉例。
package thread; public class ThreadGroup_Demo { public static void main(String[] args) { MyRunnable mr = new MyRunnable(); Thread t1 = new Thread(mr, "張三"); Thread t2 = new Thread(mr, "李四"); System.out.println(t1.getThreadGroup().getName()); System.out.println(t2.getThreadGroup().getName()); } } class MyRunnable implements Runnable { @Override public void run() { for (int i = 0; i < 1000; i++) { System.out.println(Thread.currentThread().getName() + "...." + i); } } }
上面我們新建了兩個Thread,一個執行緒叫張三,第二個叫李四。上面列印的是執行緒組的名稱,而不是執行緒的名稱。獲取執行緒組是通過執行緒物件呼叫getThreadGroup方法,然後呼叫getName方法得到執行緒所線上程組的名稱。
執行結果
main
main
從結果來看,執行緒名稱為張三和李四的兩個執行緒,預設都屬於main執行緒。
2.執行緒分組舉例
還是上面差不多程式碼,把t1放線上程組A管理,t2放線上程組B管理。
package thread; public class ThreadGroup_Demo { public static void main(String[] args) { ThreadGroup tg1 = new ThreadGroup("執行緒組A"); //建立新的執行緒組 ThreadGroup tg2 = new ThreadGroup("執行緒組B"); //建立新的執行緒組 MyRunnable mr = new MyRunnable(); //建立Runnable的子類物件 Thread t1 = new Thread(tg1, mr, "張三"); // 將執行緒t1放線上程組A Thread t2 = new Thread(tg2, mr, "李四"); // 將執行緒t2放線上程組B System.out.println(t1.getThreadGroup().getName()); System.out.println(t2.getThreadGroup().getName()); } } class MyRunnable implements Runnable { @Override public void run() { for (int i = 0; i < 1000; i++) { System.out.println(Thread.currentThread().getName() + "...." + i); } } }
執行結果
執行緒組A
執行緒組B
3.執行緒的5種狀態(生命週期)