java多线程之线程的状态转变

线程的对象在不同的运行时期有不同的状态,状态信息就存在于State枚举类中

java多线程之线程的状态转变

线程的状态转换关系:

java多线程之线程的状态转变

线程进入Runnable状态大体分为如下5种情况:
1.调用sleep()方法后经过的时间超过了指定的休眠时间。
2.线程调用的阻塞IO已经返回,阻塞方法执行完毕
2.线程成功的获得了试图同步的监视器。
4.线程正在等待某个通知,其他线程发出了通知。
5.处于挂起状态的线程调用了resume恢复方法。

出现阻塞的情况大体分为如下5种:
1.线程调用sleep方法,主动放弃占用的处理器资源
2.线程调用了阻塞式IO方法,在该方法返回前,该线程被阻塞。
3.线程试图获得一个同步监视器,但该同步监视器整备其他线程所持有。
4.线程等待某个通知
5.程序调用了suspend方法将该线程挂起。此方法容易导致死锁,