线程组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();    // 将有关此线程组的信息打印到标准输出。
    }
}

results matching ""

    No results matching ""