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);
}
}
}