1.线程的状态:

我们可以通过wait,start,notify等关键字来切换线程的状态,但是我们如何知道线程目前是处于哪一种状态呢?使用Thread.getState()来获取,有下面几种常见的状态:

(1)NEW

实例化的时候,即执行构造函数的时候,但是还没有start

(2)RUNNABLE:

运行中,

(3)TIMED_WAITING:

当前线程执行了Thread.sleep()之后处于睡眠状态

(4)BLOCKED

处于等待锁的状态,注意不是阻塞了,而是处于等待cpu分配资源调度的状态,一般是调用了sleeo()

(5)WAITING

处于阻塞状态,一般是调用了Thread.wait()方法导致的,

下面看看线程组

线程组简单来说就是将同一类型,同一个对象监听器,或者根据其他规则,将一些线程放在一起,将他们分为一个组,这样子方便对他们进行一些批处理操作,并且也可以获取当前

首先看下怎么创建线程组:


Runnable run1 = new Runnable(){
public void run(){
System.out.println("run1");
}
};
Runnable run2 = new Runnable(){
public void run(){
System.out.println("run2");
}
};
ThreadGroup group = new ThreadGroup("我的线程组"); 
Thread A = new Thread(group,run1);
Thread B = new Thread(group,run2);

如图,这是一个一级线程组,我们将A,B线程归入到了group当中,即线程组里面只有单纯的线程。

之后我们就可以调用类似于:

group.getActiveCount();
group.getName();

的方法来获取当前线程总体的状态,当然也可以执行一些其他操作,比如集体等待,集体唤醒等

那么我们也有多级关联的线程组,简单来说就是线程组里面还有一个线程组,相当于存在子孙,这个不说了

那么我们如果要对一个线程组当中的满足条件的一些线程进行处理,该如何取得他们呢?

ThreadGroup[] groups = new ThreadGroup(Thread.currentThread.getThreadGroup.acticeGroupCount());

Thread.currentGroup().getThreadGroup().enumerate(groups,true);

一种格式,记住就行,就是以枚举的方式将当前线程组的组内线程枚举到指定指定线程组数组,枚举方式有递归和非递归,递归的话会枚举出所有的线程,即遍历整个线程组树,非递归的话只会枚举第一层,

还有一个线程组异常处理和SimpleDateFormat非线程安全两个点,感觉没撒用。。。。待更吧

<七>对于之前的一些遗漏的地方的补充的更多相关文章

  1. paper 10:支持向量机系列七:Kernel II —— 核方法的一些理论补充,关于 Reproducing Kernel Hilbert Space 和 Representer Theorem 的简介。

    在之前我们介绍了如何用 Kernel 方法来将线性 SVM 进行推广以使其能够处理非线性的情况,那里用到的方法就是通过一个非线性映射 ϕ(⋅) 将原始数据进行映射,使得原来的非线性问题在映射之后的空间 ...

  2. Android Multimedia框架总结(七)C++中MediaPlayer的C/S架构补充及MediaService介绍

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼,文章链接: http://blog.csdn.net/hejjunlin/article/details/52465168 前面一篇主要介绍 ...

  3. 【转】 Pro Android学习笔记(四七):Dialog(4):一些补充和思考

    目录(?)[-] 编程思想封装接口 fragment和activity以其他fragment之间的通信 编程思想:封装接口 在小例子中,fragment会调用activity的onDialogDone ...

  4. 四则运算可能需要注意的地方V1.1

    作业:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/997 文档下载:https://coding.net/u/Dawnfox/p/ ...

  5. ASP.NET MVC学习---(七)Razor视图引擎语法

    之前体验过razor视图引擎@符号的威力了吧~ 连我这个初学者都能感觉到确实省时省力方便快捷 简直就是居家旅行*人*货必备之物啊(这里和谐两个字~) 那么现在就开始对razor的语法进一步介绍~ 1. ...

  6. Java编程思想读书笔记

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. extjs笔记

      1.    ExtJs 结构树.. 2 2.    对ExtJs的态度.. 3 3.    Ext.form概述.. 4 4.    Ext.TabPanel篇.. 5 5.    Functio ...

  8. Mybatis.net与MVC入门配置及联合查询动态SQL拼接和简单事务

    第一次学习Mybatis.net,在博客园也找到好多资料,但是在配置成功之后也遇到了一些问题,尤其是在动态SQl拼接时候,这里把遇到的问题还有自己写的一个Demo贴出来,希望能帮到新手,有不适合的地方 ...

  9. sublime前端编辑器入门与个人使用经验分享

    Sublime Text(以下简称sublime)是一款很好用的代码编辑器,小巧且很灵敏,几乎可以编写大部分主流的计算机语言代码,更是堪称前端代码编辑神器. 你百度一下会发现许多sublime的安装和 ...

随机推荐

  1. Java项目之客户信息管理软件

    模拟实现基于文本界面的客户信息管理软件,该软件能够实现对客户对象的插入. 修改和删除(用数组实现),并能够打印客户明细表. 项目采用分级菜单方式.主菜单如下: “添加客户”的界面及操作过程如下所示: ...

  2. 使用Merkle树检测数据不一致(翻译)

    背景 Cassandra的逆熵功能使用Merkle树来检测副本之间的数据不一致. 定义 Merkle树是一种哈希树,其中的叶子包含各个数据块的哈希值,父节点包含其各自的子节点的哈希值.它提供了一种有效 ...

  3. 【UEFI&BIOS】---BIOS开机串口报"ERROR: C2:V1050007 IO 93B80003-9FB3-11D4-9A3A-0090273FC14D 6413FA18"的分析

    intel的X86 CPU对运行错误的处理已经做的非常完善了,一般即使是开机卡死,跑飞等各种问题也会丢给你相关的提示信息,那么掌握这种错误的分析手段就显得至关重要.在实际开发的过程中,我遇到了一个错误 ...

  4. Nginx. 用http访问https跨域

    用http 访问 https域名, 报跨越问题 解决方法: 在nginx相应服务的转发配置下添加: add_header 'Access-Control-Allow-Origin' 'http://i ...

  5. Xcode10:library not found for -lstdc++.6.0.9 临时解决

    1.https://pan.baidu.com/s/1IkbZb6qaxgvghP1HEFQa6w?errno=0&errmsg=Auth%20Login%20Sucess&& ...

  6. Nmap使用教程(一)

    基本扫描技术 扫描单个网络 nmap 192.168.1.1/www.baidu.com 扫描多个网络/目标 nmap 192.168.1.1 192.168.1.2 #将扫描同个网段内不同的ip地址 ...

  7. Sublime Text 3 安装包

    摘要 Error while loading PyV8 binary:exit code 3 .sublime-package报错 安装SublimeREPL,可以运行python代码 安装local ...

  8. 客户端 jQuery 跨端口 调用 node 服务端

    一句话 很顶用 response.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8020'); 说 响应的头文件里设置 一个 h ...

  9. 团队项目——Beta冲刺

    团队项目-Beta冲刺 作业所属课程 软件工程 作业要求 团队项目-Beta冲刺 团队名称 运气王团队 作业目标 (1)SCRUM部分(2)PM 报告 成员列表: 1.团队成员的学号列表 |何宸锐(组 ...

  10. CSS-15-定位

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...