线程的五种状态
1.新建状态(New):
创建一个新的线程对象。
2.就绪状态(Runnable):
线程创建对象后,其他线程调用 start()方法,该线程处于就绪状态,资源已经准备就绪,等待 CPU 资源。
3.运行状态(Running):
处于就绪状态的线程获取到 CPU 资源后进入运行状态。
4.阻塞状态(Blocked):
阻塞状态是线程由于某些原因放弃 CPU 使用,暂时停止运行。
(1)等待阻塞:线程调用 start()方法,JVM 会把这个线程放入等待池中,该线程需要其他线程调用 notify()或 notifyAll()方法才能被唤醒。
(2)同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被其他线程占用,则 JVM 会把该线程放入锁池中。
(3)其他阻塞:运行的线程执行 sleep()或 join()方法,或者发出了 I/O 请求时,JVM 会把该线程置为阻塞状态。当 sleep()状态超时、join()等待线程终止或者超时、或者 I/O 处理完毕时,线程重新转入就绪状态。
5.终止状态(Terminated):
线程 run()方法运行完毕,该线程结束。
评论