在上一篇章中我们谈论了 WAITING 状态, 在这一篇章里, 我们来看剩余的最后的一个状态: TIMED_WAITING(限时等待).
Java 线程状态之 TIMED_WAITING
摘要: 深入探讨了 Java 线程的 TIMED_WAITING 状态
摘要: 深入探讨了 Java 线程的 TIMED_WAITING 状态
摘要: 深入探讨了 Java 线程的 WAITING 状态, 特别是对 wait/notify 的情形进行了深入分析.
摘要: 深入探讨了 Java 线程的 BLOCKED 状态, 特别是对 enter 及 reenter 两种情形进行了深入分析.
在 上一篇章 中, 我们强调了 BLOCKED 状态跟 I/O 的阻塞是不同的, 它不是一般意义上的阻塞, 而是特指被 synchronized 块阻塞, 即是跟线程同步有关的一个状态.
前面 已经说过 BLOCKED(阻塞) 的简单定义为:
一个正在阻塞等待一个监视器锁的线程处于这一状态. (A thread that is blocked waiting for a monitor lock is in this state.)
更加详细的定义可以参考 Thread.State
中的 javadoc:
/**
* Thread state for a thread blocked waiting for a monitor lock.
* A thread in the blocked state is waiting for a monitor lock
* to enter a synchronized block/method or
* reenter a synchronized block/method after calling
* {@link Object#wait() Object.wait}.
*/
BLOCKED,
摘要: 深入探讨了 Java 线程的 RUNNABLE 状态, 特别是对处在 IO 阻塞时的状态进行了深入分析.
摘要: 初步谈论了Java中的6种线程状态, 并探讨了它们与操作系统线程状态的异同.
Java 线程有 6 种状态. 在某个给定时间点上, 一个线程只能处于这 6 种状态中的一种.
这 6 种状态被明确地定义在 Thread
类的一个内部枚举类 Thread.State
中:
它们是:
NEW
(新建) A thread that has not yet started is in this state.RUNNABLE
(可运行) A thread executing in the Java virtual machine is in this state.BLOCKED
(阻塞) A thread that is blocked waiting for a monitor lock is in this state.WAITING
(等待) A thread that is waiting indefinitely for another thread to perform a particular action is in this state.TIMED_WAITING
(计时等待) A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.TERMINATED
(终止) A thread that has exited is in this state.注: 以上内容直接来自 State 类中的 Javadoc, 只对状态进行了翻译, 具体的描述后面再分析.
它上面还有个注解
@since 1.5
, 暗示了在 JDK1.5 时引入了这些定义.因此, 说有 6 种线程状态是对 1.5 及以后版本而言.
Thread 类中有一个方法 getState
, 返回的就是这里定义的状态.
可用于监控工具分析线程状态, 不作同步工具使用.