博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java多线程-54-ThreadGroup线程组
阅读量:4302 次
发布时间:2019-05-27

本文共 1650 字,大约阅读时间需要 5 分钟。

前面学习了多线程几个例子,有两个线程,三个线程。线程多了,就需要有东西去管理线程。所以,很多线程的情况下,可以分组去管理。这篇就学习一个类叫ThreadGroup,线程组类。

1.线程组的概述

Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java运行程序直接对线程组进行控制。默认情况下,所有的线程都属于主线程。

关于默认属于主线程,我们用下来代码来举例。

package thread;public class ThreadGroup_Demo {	public static void main(String[] args) {        MyRunnable mr = new MyRunnable();        Thread t1 = new Thread(mr, "张三");        Thread t2 = new Thread(mr, "李四");        System.out.println(t1.getThreadGroup().getName());        System.out.println(t2.getThreadGroup().getName());	}}class MyRunnable implements Runnable {	@Override	public void run() {		for (int i = 0; i < 1000; i++) {			System.out.println(Thread.currentThread().getName() + "...." + i);		}	}	}

上面我们新建了两个Thread,一个线程叫张三,第二个叫李四。上面打印的是线程组的名称,而不是线程的名称。获取线程组是通过线程对象调用getThreadGroup方法,然后调用getName方法得到线程所在线程组的名称。

运行结果

mainmain

从结果来看,线程名称为张三和李四的两个线程,默认都属于main线程。

2.线程分组举例

还是上面差不多代码,把t1放在线程组A管理,t2放在线程组B管理。

package thread;public class ThreadGroup_Demo {	public static void main(String[] args) {		ThreadGroup tg1 = new ThreadGroup("线程组A");		//创建新的线程组		ThreadGroup tg2 = new ThreadGroup("线程组B");		//创建新的线程组        MyRunnable mr = new MyRunnable();						//创建Runnable的子类对象                Thread t1 = new Thread(tg1, mr, "张三");         // 将线程t1放在线程组A        Thread t2 = new Thread(tg2, mr, "李四");         // 将线程t2放在线程组B        System.out.println(t1.getThreadGroup().getName());        System.out.println(t2.getThreadGroup().getName());        	}}class MyRunnable implements Runnable {	@Override	public void run() {		for (int i = 0; i < 1000; i++) {			System.out.println(Thread.currentThread().getName() + "...." + i);		}	}	}

运行结果

线程组A线程组B

3.线程的5种状态(生命周期)

转载地址:http://szows.baihongyu.com/

你可能感兴趣的文章
SpringCloud Feign的使用方式(二)
查看>>
关于Vue-cli+ElementUI项目 打包时排除Vue和ElementUI
查看>>
Vue 路由懒加载根据根路由合并chunk块
查看>>
vue中 不更新视图 四种解决方法
查看>>
MySQL 查看执行计划
查看>>
OpenGL ES 3.0(四)图元、VBO、VAO
查看>>
OpenGL ES 3.0(五)纹理
查看>>
OpenGL ES 3.0(八)实现带水印的相机预览功能
查看>>
OpenGL ES 3.0(九)实现美颜相机功能
查看>>
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>