一、概述
Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
默认情况下,所有的线程都属于主线程组。
ThreadGroup
getThreadGroup()
返回该线程所属的线程组。
String
getName()
返回此线程组的名称。
我们也可以给线程设置分组
ThreadGroup(String name)
构造一个新线程组。ThreadGroup(ThreadGroup parent, String name)
创建一个新线程组。
Thread(ThreadGroup group, Runnable target)
分配新的Thread
对象。Thread(ThreadGroup group, Runnable target, String name)
分配新的Thread
对象,以便将target
作为其运行对象,将指定的name
作为其名称,并作为group
所引用的线程组的一员。Thread(ThreadGroup group, Runnable target, String name, long stackSize)
分配新的Thread
对象,以便将target
作为其运行对象,将指定的name
作为其名称,作为group
所引用的线程组的一员,并具有指定的堆栈大小。Thread(ThreadGroup group, String name)
分配新的Thread
对象。
二、使用
1.默认是主线程组
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr, "张三");
Thread t2 = new Thread(mr, "李四");
//获取线程组
ThreadGroup tg1 = t1.getThreadGroup();
ThreadGroup tg2 = t2.getThreadGroup();
String name1 = tg1.getName();
String name2 = tg2.getName();
System.out.println(name1);
System.out.println(name2);
// 通过结果我们知道了:线程默认情况下属于main线程组
// 通过下面的测试,你应该能够看到,默任情况下,所有的线程都属于同一个组
System.out.println(Thread.currentThread().getThreadGroup().getName());
2.自己设定线程组
ThreadGroup tg = new ThreadGroup("这是一个新的组");
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(tg, mr, "张三");
Thread t2 = new Thread(tg, mr, "李四");
System.out.println(t1.getThreadGroup().getName());
System.out.println(t2.getThreadGroup().getName());
//通过组名称设置后台线程,表示该组的线程都是后台线程
tg.setDaemon(true);