什么是线程组?你学会了吗?( 三 )


例子如下:
public class MyThreadA extends Thread{    public MyThreadA(ThreadGroup group, String name) {        super(group, name);    }    @Override    public void run() {        System.out.println("线程:" + Thread.currentThread().getName() + ",开始运行");        String t;        for (int i = 0; i < 1000000000; i++) {            t = i + "";        }        System.out.println("线程:" + Thread.currentThread().getName() + ",停止运行");    }}public class MyThreadB extends Thread{    public MyThreadB(ThreadGroup group, String name) {        super(group, name);    }    @Override    public void run() {        System.out.println("线程:" + Thread.currentThread().getName() + ",开始运行");        while (!Thread.interrupted()){        }        System.out.println("线程:" + Thread.currentThread().getName() + ",停止运行");    }}public class MyThreadC extends Thread{    public MyThreadC(ThreadGroup group, String name) {        super(group, name);    }    @Override    public void run() {        System.out.println("线程:" + Thread.currentThread().getName() + " , 开始运行");        try {            Thread.sleep(1000);        } catch (Exception e){//            e.printStackTrace();        }        System.out.println("线程:" + Thread.currentThread().getName() + " , 停止运行");    }}public class MyThreadMainTest {    public static void main(String[] args) throws Exception {        ThreadGroup tg = new ThreadGroup("group1");        new MyThreadA(tg,"t1").start();        new MyThreadB(tg,"t2").start();        new MyThreadC(tg,"t3").start();        // 尝试中断线程组里面的线程        tg.interrupt();    }}输出结果如下:
线程:t1,开始运行线程:t2,开始运行线程:t2 , 停止运行线程:t3,开始运行线程:t3,停止运行线程t1只有等它运行结束,通过interrupt()不能中断程序!
四、小结本文主要围绕线程组的一些基本概念以及常用方法,并结合了一些简单示例进行介绍 。
线程组的出现更多的是便于有组织的管理线程,比如 JAVA 的线程池就用到了线程组,更多的线程知识,我们在后续的文章中会进行介绍 。
如果有描述不对的地方,欢迎网友留言指出 。
五、参考1、https://www.cnblogs.com/xrq730/p/4856072.html
2、https://cloud.tencent.com/developer/article/1633465

【什么是线程组?你学会了吗?】


推荐阅读