package cn.itcast_06;
/*
* 線程組:把多個線程組全在一起。
* 它可以對一批線程進行分類管理,Java允許程式直接對線程組進行控制。
*/
public class ThreadGroupDemo {
public static void main(String[] args) {
method1();
// 我們如何修改線程所在的組呢?
// 建立一個線程
// 建立其它線程的時候,把其它線程的組指定為我們自已建立線程組
method2();
// t1.start();
// t2.start();
}
private static void method2() {
ThreadGroup tg = new ThreadGroup("這是一個新的組");
MyRunnable my = new MyRunnable();
// public 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);
method1();
}
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);
System.out.println(name2);
// 通過結果我們知道了:線程預設情況下屬于main線程組
// 通過測試,我們看到,預設情況下,所有的線程都屬于同一個組
System.out.println(Thread.currentThread().getThreadGroup().getName());
// t1.start();
// t2.start();
}
}
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);
}
}
}