<七>对于之前的一些遗漏的地方的补充
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非线程安全两个点,感觉没撒用。。。。待更吧
<七>对于之前的一些遗漏的地方的补充的更多相关文章
- paper 10:支持向量机系列七:Kernel II —— 核方法的一些理论补充,关于 Reproducing Kernel Hilbert Space 和 Representer Theorem 的简介。
在之前我们介绍了如何用 Kernel 方法来将线性 SVM 进行推广以使其能够处理非线性的情况,那里用到的方法就是通过一个非线性映射 ϕ(⋅) 将原始数据进行映射,使得原来的非线性问题在映射之后的空间 ...
- Android Multimedia框架总结(七)C++中MediaPlayer的C/S架构补充及MediaService介绍
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼,文章链接: http://blog.csdn.net/hejjunlin/article/details/52465168 前面一篇主要介绍 ...
- 【转】 Pro Android学习笔记(四七):Dialog(4):一些补充和思考
目录(?)[-] 编程思想封装接口 fragment和activity以其他fragment之间的通信 编程思想:封装接口 在小例子中,fragment会调用activity的onDialogDone ...
- 四则运算可能需要注意的地方V1.1
作业:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/997 文档下载:https://coding.net/u/Dawnfox/p/ ...
- ASP.NET MVC学习---(七)Razor视图引擎语法
之前体验过razor视图引擎@符号的威力了吧~ 连我这个初学者都能感觉到确实省时省力方便快捷 简直就是居家旅行*人*货必备之物啊(这里和谐两个字~) 那么现在就开始对razor的语法进一步介绍~ 1. ...
- Java编程思想读书笔记
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- extjs笔记
1. ExtJs 结构树.. 2 2. 对ExtJs的态度.. 3 3. Ext.form概述.. 4 4. Ext.TabPanel篇.. 5 5. Functio ...
- Mybatis.net与MVC入门配置及联合查询动态SQL拼接和简单事务
第一次学习Mybatis.net,在博客园也找到好多资料,但是在配置成功之后也遇到了一些问题,尤其是在动态SQl拼接时候,这里把遇到的问题还有自己写的一个Demo贴出来,希望能帮到新手,有不适合的地方 ...
- sublime前端编辑器入门与个人使用经验分享
Sublime Text(以下简称sublime)是一款很好用的代码编辑器,小巧且很灵敏,几乎可以编写大部分主流的计算机语言代码,更是堪称前端代码编辑神器. 你百度一下会发现许多sublime的安装和 ...
随机推荐
- Fastadmin 如何引入 layui 模块
FastAdmin基于RequireJS进行前端JS模块的管理,因此如果我们需要再引入第三方JS插件,则必按照RequireJS的规则进行载入.如果你还不了解什么是RequireJS,可以先简单了解下 ...
- Java程序员必备基础:内部类解析
前言 整理了一下内部类的相关知识,算是比较全,比较基础的,希望大家一起学习进步. 一.什么是内部类? 在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类.内部类本身就是类的一个属性 ...
- Vim区块选择
区块选择的按键意义: 区块选择的按键意义 v 字符选择,光标经过的地方反白 V 列选择,光标经过的列反白 [ctrl]+v 区块选择,可以用长方形的方式选择资料 d 将发白的地方删除掉 y 将反白的地 ...
- kubespy 用bash实现的k8s动态调试工具
原文位于 https://github.com/huazhihao/kubespy/blob/master/implement-a-k8s-debug-plugin-in-bash.md 背景 Kub ...
- creator 2.0版本对于preloadScene函数获取加载进度
有时候,当我们场景上挂载的资源过多时,我们使用cc.director.loadScene切换场景时会等一段时间才会切换过去,这对游戏的体验是相当不好的.所以我们可以使用cc.director.prel ...
- ZooKeeper Java Example
A Simple Watch Client Requirements Program Design The Executor Class The DataMonitor Class Complete ...
- 移动端保存当前屏幕内容为图片,canvas图片拼接
需求:1.移动端点击分享时,截屏当前屏幕,并保存为图片 2.将截屏的图片与一张二维码图片进行拼接后,生成一张新的图片 技术栈:html2canvas.js.canvas2image.js 代码:(j ...
- floj 2264
2.公路建设(highway.c/cpp/pas) 在滨海市一共有n 个城市,编号依次为1到n,它们之间计划修建m条双向道路,其中修建第i条道路的费用为ci. 海霸王作为滨海市公路建设项目的总工程师, ...
- Go 每日一库之 go-homedir
简介 今天我们来看一个很小,很实用的库go-homedir.顾名思义,go-homedir用来获取用户的主目录. 实际上,使用标准库os/user我们也可以得到这个信息: package main i ...
- linux 反选删除文件
一.背景 历史原因自动部署程序的历史版本没有自动删除脚本.导致服务器没有空间了.但是又不能将所有的备份都删除. 所以要求只保留一个备份版本,把其他的删除. 二. 要求 要求:删除 除了 2017110 ...