多執行緒-執行緒組的概述和使用

ZHOU_VIP發表於2017-06-03

package cn.itcast_06;

public class MyRunnable implements Runnable {

	@Override
	public void run() {
		for (int x = 0; x < 100; x++) {
			System.out.println(Thread.currentThread().getName() + ":" + x);
		}
	}

}


package cn.itcast_06;

/*
 * 執行緒組: 把多個執行緒組合到一起。
 * 它可以對一批執行緒進行分類管理,Java允許程式直接對執行緒組進行控制。
 */
public class ThreadGroupDemo {
	public static void main(String[] args) {
		// method1();

		// 我們如何修改執行緒所在的組呢?
		// 建立一個執行緒組
		// 建立其他執行緒的時候,把其他執行緒的組指定為我們自己新建執行緒組
		method2();

	}

	private static void method2() {
		// ThreadGroup(String name)
		ThreadGroup tg = new ThreadGroup("這是一個新的組");

		MyRunnable my = new MyRunnable();
		// Thread(ThreadGroup group, Runnable target, String name)
		Thread t1 = new Thread(tg, my, "林青霞");
		Thread t2 = new Thread(tg, my, "劉意");
		
		System.out.println(t1.getThreadGroup().getName());
		System.out.println(t2.getThreadGroup().getName());
		
		//通過組名稱設定後臺執行緒,表示該組的執行緒都是後臺執行緒
		tg.setDaemon(true);
	}

	private static void method1() {
		MyRunnable my = new MyRunnable();
		Thread t1 = new Thread(my, "林青霞");
		Thread t2 = new Thread(my, "劉意");
		// 我不知道他們屬於那個執行緒組,我想知道,怎麼辦
		// 執行緒類裡面的方法:public final ThreadGroup getThreadGroup()
		ThreadGroup tg1 = t1.getThreadGroup();
		ThreadGroup tg2 = t2.getThreadGroup();
		
		// 執行緒組裡面的方法:public final String getName()
		String name1 = tg1.getName();
		String name2 = tg2.getName();
		System.out.println(name1); //main
		System.out.println(name2); //main
		// 通過結果我們知道了:執行緒預設情況下屬於main執行緒組
		// 通過下面的測試,你應該能夠看到,默任情況下,所有的執行緒都屬於同一個組
		System.out.println(Thread.currentThread().getThreadGroup().getName()); //main
	}
}




相關文章