• Android(java)学习笔记13:线程组的概述和使用


    1. Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。

    (1)默认情况下,所有的线程都属于主线程组。 public final ThreadGroup getThreadGroup()

    (2)我们也可以给线程设置分组 Thread(ThreadGroup group, Runnable target, String name)

    下面我根据代码来实现:

    Runnable接口实现类

     1 package cn.itcast_06;
     2 
     3 public class MyRunnable implements Runnable {
     4 
     5     @Override
     6     public void run() {
     7         for (int x = 0; x < 100; x++) {
     8             System.out.println(Thread.currentThread().getName() + ":" + x);
     9         }
    10     }
    11 
    12 }

     测试类:

     1 package cn.itcast_06;
     2 
     3 /*
     4  * 线程组: 把多个线程组合到一起。
     5  * 它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
     6  */
     7 public class ThreadGroupDemo {
     8     public static void main(String[] args) {
    14         MyRunnable my = new MyRunnable();
    15         Thread t1 = new Thread(my, "林青霞");
    16         Thread t2 = new Thread(my, "刘意");
    17         // 我不知道他们属于那个线程组,我想知道,怎么办
    18         // 线程类里面的方法:public final ThreadGroup getThreadGroup()
    19         ThreadGroup tg1 = t1.getThreadGroup();
    20         ThreadGroup tg2 = t2.getThreadGroup();
    21         // 线程组里面的方法:public final String getName()
    22         String name1 = tg1.getName();
    23         String name2 = tg2.getName();
    24         System.out.println(name1);
    25         System.out.println(name2);
    26         // 通过结果我们知道了:线程默认情况下属于main线程组
    27         // 通过下面的测试,你应该能够看到,默任情况下,所有的线程都属于同一个组
    28         System.out.println(Thread.currentThread().getThreadGroup().getName());
    //t1.start();
    //t1.start();
    }
    }

    输出结果是:

    2. 当然现实生活中我们要自定义线程组,所有接下来我们讲解自定义线程组

    这里我们不得不说自定义线程组的逻辑如下:

    (1)创建一个线程组

    (2)创建其他线程的时候,把其他线程的组指定为我们自己新建的线程组

     1 package cn.itcast_06;
     2 
     3 public class MyRunnable implements Runnable {
     4 
     5     @Override
     6     public void run() {
     7         for (int x = 0; x < 100; x++) {
     8             System.out.println(Thread.currentThread().getName() + ":" + x);
     9         }
    10     }
    11 
    12 }
     1 package cn.itcast_06;
     2 
     3 /*
     4  * 线程组: 把多个线程组合到一起。
     5  * 它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
     6  */
     7 public class ThreadGroupDemo {
     8     public static void main(String[] args) {
     9         // method1();
    10 
    11         // 我们如何修改线程所在的组呢?
    12         // 创建一个线程组
    13         // 创建其他线程的时候,把其他线程的组指定为我们自己新建线程组
    14         method2();
    15 
    16         // t1.start();
    17         // t2.start();
    18     }
    19 
    20     private static void method2() {
    21         // ThreadGroup(String name)
    22         ThreadGroup tg = new ThreadGroup("这是一个新的组");
    23 
    24         MyRunnable my = new MyRunnable();
    25         // Thread(ThreadGroup group, Runnable target, String name),指定t1和t2为线程组tg
    26         Thread t1 = new Thread(tg, my, "林青霞");
    27         Thread t2 = new Thread(tg, my, "刘意");
    28        
    29         System.out.println(t1.getThreadGroup().getName());
    30         System.out.println(t2.getThreadGroup().getName());
    31         
    32         //通过组名称设置后台线程,表示该组的线程都是后台线程,这里可以直接设置线程组,就可以设置线程组中的所有的线程
    33         tg.setDaemon(true);
    34     }
    35 
    36     private static void method1() {
    37         MyRunnable my = new MyRunnable();
    38         Thread t1 = new Thread(my, "林青霞");
    39         Thread t2 = new Thread(my, "刘意");
    40         // 我不知道他们属于那个线程组,我想知道,怎么办
    41         // 线程类里面的方法:public final ThreadGroup getThreadGroup()
    42         ThreadGroup tg1 = t1.getThreadGroup();
    43         ThreadGroup tg2 = t2.getThreadGroup();
    44         // 线程组里面的方法:public final String getName()
    45         String name1 = tg1.getName();
    46         String name2 = tg2.getName();
    47         System.out.println(name1);
    48         System.out.println(name2);
    49         // 通过结果我们知道了:线程默认情况下属于main线程组
    50         // 通过下面的测试,你应该能够看到,默任情况下,所有的线程都属于同一个组
    51         System.out.println(Thread.currentThread().getThreadGroup().getName());
    52     }
    53 }
  • 相关阅读:
    html页面模板布局内容的继承,block
    url分发
    显示年月,注册页面和后台数据交互,不涉及数据库
    static文件夹中文件引用方式,如html页面引用js
    pycharm写django之返回一个页面
    pycharm编写django第一步
    VUE清除keepalive页面缓存
    js设置html根节点的style字体【Vue动态调整全局字体大小】
    npm 依赖重新安装或更新版本
    antd 自定义表头slots.title不生效
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4510498.html
Copyright © 2020-2023  润新知