1. 程式人生 > >Java多執行緒-54-ThreadGroup執行緒組

Java多執行緒-54-ThreadGroup執行緒組

前面學習了多執行緒幾個例子,有兩個執行緒,三個執行緒。執行緒多了,就需要有東西去管理執行緒。所以,很多執行緒的情況下,可以分組去管理。這篇就學習一個類叫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種狀態(生命週期)