7-线程组

线程组

在一个系统中若是线程数量很多,且功能分配明确,就可以将相同功能的线程放置在同一个线程组中

其使用方式如下:

public class ThreadGroupDemo implements Runnable{
    public static void main(String[] args) {
        ThreadGroup tg = new ThreadGroup("TestGroup");
        Thread t1 = new Thread(tg, new ThreadGroupDemo(), "T1");
        Thread t2 = new Thread(tg, new ThreadGroupDemo(), "T2");

        t1.start();
        t2.start();
        System.out.println("线程组中有:" + tg.activeCount()+"个活动线程");
        tg.list();
    }

    @Override
    public void run() {
        String groupAndNAme = Thread.currentThread().getThreadGroup().getName()
                + "-" + Thread.currentThread().getName();
        while(true){
            System.out.println("I am " + groupAndNAme);
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

线程组中有:2个线程
I am TestGroup-T1
I am TestGroup-T2
java.lang.ThreadGroup[name=TestGroup,maxpri=10]
Thread[T1,5,TestGroup]
Thread[T2,5,TestGroup]
I am TestGroup-T1
I am TestGroup-T2

…..

….

上述代码使用了Thread的构造函数,指定线程所属的线程组将线程和线程组关联起来,activeCount可以获得线程组中的活动线程的总数,要注意这个值知识个估值,无法精确。list()可以打印这个线程组中的所有线程信息,对调试有一定的帮助。

最后强烈建议在创建线程和线程组的时候创建一个比较合适的名字,而不是"Thread-0"这种。

posted @ 2020-01-02 22:02  煎饼爱大葱  阅读(64)  评论(0)    收藏  举报