线程组ThreadGroup在java.lang包下,线程组表示一个线程的集合。此外,线程组也可以包含其他线程组。
// 构造一个新线程组的两种方法
/**
* 新线程组的父线程组是目前正在运行线程的线程组Thread.currentThread().getThreadGroup()
* SecurityException - 如果当前线程不能在指定的线程组中创建线程
*/
public ThreadGroup(String name)
// 新线程组的父线程组是指定的线程组
public ThreadGroup(ThreadGroup parent, String name)
常用方法
public int activeCount() // 返回此线程组中活动线程的估计数
public int activeGroupCount() // 返回此线程组中活动线程组的估计数
public final int getMaxPriority() // 返回此线程组的最高优先级
public final boolean isDaemon() //测试此线程组是否为一个后台程序线程组
public boolean isDestroyed() // 测试此线程组是否已经被销毁
public final void setDaemon(boolean daemon) // 更改此线程组的后台程序状态
public void list() // 将有关此线程组的信息打印到标准输出。此方法只对调试有用
/**
* ThreadGroup的简单演示
*/
public class ThreadGroupDemo {
public static class MyThread implements Runnable {
@Override
public void run() {
String thread_info = Thread.currentThread().getThreadGroup().getName() +
"--" + Thread.currentThread().getName();
while( true ){
System.out.println( "I am " + thread_info );
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws InterruptedException {
ThreadGroup group = new ThreadGroup("Group Demo"); //创建线程组
for(int i=0; i<5; i++){
//让线程作为 group 所引用的线程组的一员
new Thread(group , new MyThread() , " T" + i).start();
}
Thread.sleep(100);
System.out.println( "线程组中活动线程组的估计数:" + group.activeGroupCount() );
System.out.println( "线程组中活动线程的估计数:" + group.activeCount() );
group.list(); // 将有关此线程组的信息打印到标准输出。
}
}