Java的六种线程状态
来源:互联网 发布:js循环30除7 编辑:程序博客网 时间:2024/05/16 08:11
在JDK中,Thread类定义了一个名为State的Enum类型,代表线程的状态,他们分别是:
New,Runnable,Blocked,Waiting,Timed_Waiting,Terminated
在线程执行的过程中,这些状态会相互转换,为了比较直观的了解,我根据JDK文档画了个状态图:
接下来我们一个一个看(以下内容均根据JDK文档编写)
New
当线程刚被创建还没开始运行时
Runnable
线程调用start()方法后,等待JVM调度,可能在执行,也可能在等待。
注:这里的等待指的是等待调度,等待的是系统资源,如IO、CPU时间片,与sleep,lock的等待有着本质差别。
Blocked
1. 线程等待进入synchronized代码块或者synchronized方法
2. 在可重入的synchronized代码块中调用了wait()
Waiting
1. 线程拥有monitor之后,调用了wait(),当其他拥有该monitor的线程调用notify()或者notifyAll()时恢复Runnable
2. 线程调用了join(),当被join的线程执行结束时恢复Runnable
3. 调用了LockSupport.park(Object),当其他线程对该线程调用park或者interrupt时恢复Runnable
Timed_Waiting
线程调用了有时间限制的wait,join,sleep方法或者LockSupport的parkNanos,parkUtils方法,满足条件(参见waiting状态)或时间到后自动恢复到Runnable状态
Terminated
1. 线程run()方法正常执行结束
2. 线程执行过程中出现了异常中途退出
- Java的六种线程状态
- 线程的六种状态
- [Java并发编程]-线程的六种状态及其状态转换
- [Java并发编程]-线程的六种状态及其状态转换
- 线程的六种状态及线程状态的判断和改变
- java线程的状态
- java线程的状态
- java的线程状态
- Java线程的状态
- Java 线程的状态
- java线程的状态
- java线程的状态
- java线程的状态
- Java线程的状态
- java线程的状态
- java线程的状态
- java线程的状态
- java的线程的几种状态
- spring使用profile选择配置文件
- C primer plus(编程练习)file-4.8-1
- 跟我开始从0学Android-Java基础-数据类型
- 马尔科夫模型----三
- Android截屏与WebView长图分享经验总结
- Java的六种线程状态
- vb.net 教程 12-1 WebBrowser 1
- 上下界网络流
- C primer plus(编程练习)file-4.8-2
- GCD&LCM&素数打表&快速幂
- 字母统计
- 动态链接库中分配内存引起的问题-- windows已在XX.exe中触发一个断点
- java并发编程实战-原子变量与非阻塞同步机制
- IntelliJ IDEA 17添加jar包