• java 22


    线程的状态转换图解:图片

     

    线程的线程组

       线程组: 把多个线程组合到一起。
         它可以对一批线程进行分类管理,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     }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    Python并行编程(七):线程同步之事件
    Python并行编程(六):线程同步之条件
    Python并行编程(五):线程同步之信号量
    Python并行编程(四):线程同步之RLock
    Python并行编程(三):线程同步之Lock
    UML关系总结——画uml图、流程图、软件结构图、类图、顺序图的方法
    2020,你好!
    字符串和多维数组
    排序算法
    查找技术
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5950172.html
Copyright © 2020-2023  润新知