例子如下:
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
【什么是线程组?你学会了吗?】
推荐阅读
- 互联网大厂是如何设计和使用缓存的?方案已开源!
- 网络安全学什么专业能做网络安全工程师?
- 10亿数据如何最快插入MySQL?
- 为什么有的网站不更新文章也有很好的排名?
- 退伍兵贷款该找什么部门
- TikTok全托管模式是什么?如何解读新模式
- TikTok如何选品?打造爆款不是梦
- 外国人喜欢什么?看看他们的网红就知道了!
- 退房时酒店为什么不再查房了?前台工作人员说出真相,原来如此!
- 茶叶是酸性还是碱性的?如果茶叶出现酸味,属于正常现象吗?