##一、Java 线程的状态
查看运行时的线程信息
java.lang.Thread.State
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
}
##二、Java 线程状态变迁
简单的理解:
- 当线程执行
wait()
方法之后, 线程进入WAITING
状态. - 进入等待状态的线程需要依靠其他线程的通知才能够返回到
RUNNABLE
状态. TIME_WAITING
状态相当于在WAITING
状态的基础上增加了超时限制, 比如通过sleep(long millis)
方法或wait(long millis)
方法可以将Java
线程置于TIME_WAITING
状态.- 当超时时间到达后
Java
线程将会返回到RUNNABLE
状态. - 当线程调用
synchronized
同步方法时, 在没有获取到锁的情况下, 线程将会进入到BLOCKED
状态. - 线程执行完之后, 进入到
TERMINATED
状态.