首页 > 代码库 > 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 多线程之 线程的状态转换、线程组