Android(java)学习笔记73:线程组的概述和使用
16lz
2021-01-26
Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
(1)默认情况下,所有的线程都属于主线程组。 public final ThreadGroup getThreadGroup()
(2)我们也可以给线程设置分组 Thread(ThreadGroupgroup, Runnabletarget, Stringname)
下面我根据代码来实现:
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();
}
}
输出结果是:
当然现实生活中我们要自定义线程组,所有接下来我们讲解自定义线程组:
这里我们不得不说自定义线程组的逻辑如下:
(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为线程组tg26 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 }
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- android之TimePicker
- android 开发 讯飞语音唤醒功能
- Android(安卓)Material Design 系列之 CoordinatorLayout + Coll
- Android(安卓)Studio相关配置Mac版
- 简单实现Android绘图板
- android builde.gradle 动态配置域名
- Android(安卓)Banner轮播控件
- Android基础入门教程——8.1.3 Android中的13种Drawable小结 Par