首页 > 代码库 > java 22 - 18 多线程之 线程的状态转换、线程组
java 22 - 18 多线程之 线程的状态转换、线程组
线程的状态转换图解:。。博客暂时不能上传图片
线程的线程组:
线程组: 把多个线程组合到一起。
它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
首先创建一个Runnable的实现类
public class MyRunnable implements Runnable { public void run() { for(int x = 0; x < 10 ; x++){ System.out.println(x); } }}
先看看默认状态下,线程都会保存在哪个线程组中
1 private static void method1() { 2 //线程在默认线程数组中 3 4 //创建对象 5 MyRunnable mr = new MyRunnable(); 6 7 //创建线程对象 8 Thread t1 = new Thread(mr,"阿三"); 9 Thread t2 = new Thread(mr,"阿四");10 11 //如果不把线程添加到自定义线程数组中,那么它们会默认添加到系统给的一个线程数组中12 //看看这个默认的线程数组是什么13 //public final ThreadGroup getThreadGroup()返回该线程所属的线程组。 如果该线程已经终止(停止运行),该方法则返回 null。 14 ThreadGroup tg1 = t1.getThreadGroup();15 ThreadGroup tg2 = t2.getThreadGroup();16 17 //查看这个数组的名称18 System.out.println(tg1.getName());19 // 通过结果我们知道了:线程默认情况下属于main线程组20 21 //链式方法查看这个数组的名称22 // 通过下面的测试,你应该能够看到,默任情况下,所有的线程都属于同一个组23 System.out.println(Thread.currentThread().getThreadGroup().getName());24 25 }
由上面可知道,线程默认情况下属于main线程组
我们再让线程添加到自定义线程组中,并对线程组中的线程进行统一控制
1 private static void method2() { 2 //线程添加到自定义线程数组中 3 4 //创建对象 5 MyRunnable mr = new MyRunnable(); 6 //创建线程数组 7 ThreadGroup tg = new ThreadGroup("自定义线程数组"); 8 9 //创建线程10 //Thread(ThreadGroup group, Runnable target, String name) 11 //分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,并作为 group 所引用的线程组的一员。12 Thread t1 = new Thread(tg,mr,"阿三");13 Thread t2 = new Thread(tg,mr,"阿四");14 15 //查看现在t1、t2所在的线程数组的名称16 System.out.println(t1.getThreadGroup().getName());17 18 //可以统一对t1、t2进行操作19 //把tg数组里的所有线程都设置成守护线程20 tg.setDaemon(true);21 22 }
java 22 - 18 多线程之 线程的状态转换、线程组
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。