java 22 - 18 多线程之 线程的状态转换、线程组
线程的状态转换图解:图片

线程的线程组:
线程组: 把多个线程组合到一起。
它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
首先创建一个Runnable的实现类
public class MyRunnable implements Runnable {
public void run() {
for(int x = 0; x < 10 ; x++){
System.out.println(x);
}
}
}
先看看默认状态下,线程都会保存在哪个线程组中
private static void method1() {
//线程在默认线程数组中
//创建对象
MyRunnable mr = new MyRunnable();
//创建线程对象
Thread t1 = new Thread(mr,"阿三");
Thread t2 = new Thread(mr,"阿四");
//如果不把线程添加到自定义线程数组中,那么它们会默认添加到系统给的一个线程数组中
//看看这个默认的线程数组是什么
//public final ThreadGroup getThreadGroup()返回该线程所属的线程组。 如果该线程已经终止(停止运行),该方法则返回 null。
ThreadGroup tg1 = t1.getThreadGroup();
ThreadGroup tg2 = t2.getThreadGroup();
//查看这个数组的名称
System.out.println(tg1.getName());
// 通过结果我们知道了:线程默认情况下属于main线程组
//链式方法查看这个数组的名称
// 通过下面的测试,你应该能够看到,默任情况下,所有的线程都属于同一个组
System.out.println(Thread.currentThread().getThreadGroup().getName());
}
由上面可知道,线程默认情况下属于main线程组
我们再让线程添加到自定义线程组中,并对线程组中的线程进行统一控制
private static void method2() {
//线程添加到自定义线程数组中
//创建对象
MyRunnable mr = new MyRunnable();
//创建线程数组
ThreadGroup tg = new ThreadGroup("自定义线程数组");
//创建线程
//Thread(ThreadGroup group, Runnable target, String name)
//分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,并作为 group 所引用的线程组的一员。
Thread t1 = new Thread(tg,mr,"阿三");
Thread t2 = new Thread(tg,mr,"阿四");
//查看现在t1、t2所在的线程数组的名称
System.out.println(t1.getThreadGroup().getName());
//可以统一对t1、t2进行操作
//把tg数组里的所有线程都设置成守护线程
tg.setDaemon(true);
}
java 22 - 18 多线程之 线程的状态转换、线程组的更多相关文章
- 用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
package com.ljn.base; /** * @author lijinnan * @date:2013-9-12 上午9:55:32 */ public class IncDecThrea ...
- 三十七、Linux 线程——线程清理和控制函数、进程和线程启动方式比较、线程的状态转换
37.1 线程清理和控制函数 #include <pthread.h> void pthread_cleanup_push(void (* rtn)(void *), void *arg) ...
- java 22 - 7 多线程之控制线程的方法
线程休眠(让线程休息一会再运行) public static void sleep(long millis) 在自定义线程类中添加该方法. 更改后,运行测试类,结果就是每执行完一轮,就休息1秒(这里设 ...
- Java多线程之线程的状态以及线程间协作通信导致的线程状态转换
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561589.html 一:线程的状态以及变化图 Java中线程中状态可分为五种:New(新建状态),Ru ...
- Thread线程源码解析,Java线程的状态,线程之间的通信
线程的基本概念 什么是线程 现代操作系统在运行一个程序的时候,会为其创建一个进程.例如,启动一个Java程序,操作系统就会创建一个Java进程.线代操作系统调度的最小单位是线程.也叫做轻量级进程.在一 ...
- java 22 - 11 多线程之模拟电影院售票口售票
使用多线程实现的第二种方式: 首先创建自定义类 public class SellTicket implements Runnable { // 定义100张票 private int ticket ...
- java 22 - 3 多线程的概述以及其它所涉及的东西(看)
1:要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在. 2:什么是进程? 通过任务管理器我们就看到了进程的存在. 而通过观察,就可以发现只有运行的程序才会出现 ...
- JAVA笔记14__多线程共享数据(同步)/ 线程死锁 / 生产者与消费者应用案例 / 线程池
/** * 多线程共享数据 * 线程同步:多个线程在同一个时间段只能有一个线程执行其指定代码,其他线程要等待此线程完成之后才可以继续执行. * 多线程共享数据的安全问题,使用同步解决. * 线程同步两 ...
- 面经手册 · 第20篇《Thread 线程,状态转换、方法使用、原理分析》
作者:小傅哥 博客:https://bugstack.cn Github:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有 ...
随机推荐
- OPENGLES 基础(一些链接和随笔)
http://imgtec.eetrend.com/blog/3912 http://blog.csdn.net/zj8792612/article/details/16116145 在线着色器编 ...
- Android引用本地aar
先建立一个lib工程,然后build出aar. 接着把aar放入要引入它的工程module的libs中. 在project的build.gradle中: repositories { flatDir ...
- xmpp整理笔记:环境的快速配置(附安装包)
现在虽然环信的xmpp框架很火,但是也有一些弊端.环信的框架部分代码不开源,而且收费模式不科学,用户量一直低于免费线则好,一旦超过,收费极高. xmpp感觉还是从xmppFramework框架学起比较 ...
- ‘Cordova/CDVPlugin.h’ file not found
phonegap项目,平时真机调试没什么问题.然后想打包成ipa了,去Product --> Archive 一下,然后就报错了,说:‘Cordova/CDVPlugin.h’ file not ...
- windows 8安装wp8之后鼠标没反应了
笔记本是windows 8 系统,昨天安装了windows phone 8.0 SDK 之后,发现无线鼠标没反应了,但是触摸屏鼠标可以正常移动!真是奇怪,旁边同学也是安装了这个sdk,但没出什么问题! ...
- BiliBili 第三方 Android 客户端应用源码
基于 Material Design 的 BiliBili 第三方 Android 客户端,我们知道这个APP目前比较流行,所以大家也比较喜欢模仿,需要的参考一下 文档共享 : https://dri ...
- 【代码笔记】iOS-读取一段文字
一,效果图. 二,工程图. 三,代码. RootViewController.m #import "RootViewController.h" @interface RootVie ...
- OC中UITabBarController控制器
UITabBarController UITabBarController(记为O)常用于管理多个导航控制器,例如有ABC三个导航控制器,可以:addChildViewController(记为A), ...
- Nodejs之MEAN栈开发(九)---- 用户评论的增加/删除/修改
由于工作中做实时通信的项目,需要用到Nodejs做通讯转接功能,刚开始接触,很多都不懂,于是我和同事就准备去学习nodejs,结合nodejs之MEAN栈实战书籍<Getting.MEAN.wi ...
- Redis客户端开发包:Jedis学习-高级应用
事务 Jedis中事务的写法是将redis操作写在事物代码块中,如下所示,multi与exec之间为具体的事务. jedis.watch (key1, key2, ...); Transaction ...