1.创建状态(New):创建一个新的线程对象,已经有了空间和其他资源。
2.就绪状态(Runnable):属于等待状态或可运行状态,若其他线程调用了该对象start()方法,从而启动线程。处于就绪状态的线程,等待cpu的使用权限执行。
3.阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃cpu使用权,暂时停止运行,直到阻塞条件被终止或结束才会正常运行。
通常分三种情况:
等待阻塞: 运行的线程执行了wait()方法,JVM将该线程放入了等待池中(wait会释放特有的锁)。
同步阻塞: 运行的线程在获取对象的同步锁时,若改同步锁被别的线程所占用,则JVM会把该线程放入锁池中。
其他阻塞: 运行的线程执行了sleep()或join()方法,或者发出了I/O请求时,JVM会把线程置为阻塞状态,当sleep()状态超时、join()等待线程终止或超时、或者I/O处理完毕,线程重新进入就许状态。(sleep不会是否持有的锁)
4.运行状态(Run):就绪状态的线程获取到了cpu的资源,执行了代码。线程获取 cpu 权限进行执行,线程只能从就绪状态到运行状态。简单点来说就是用Run运行了方法。
5.死亡状态(Dead):线程执行完成或者因异常退出了 run() 方法,该线程结束生命周期。多线程编程中严禁强制死亡,应该通过标志位等让其正常结束。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)