| 状态 | 概述 |
|---|---|
| 新建状态(New Thread) | 线程处于创建状态,并没有调用start()方法之前 |
| 就绪状态(Runnable) | 调用start()方法之后进入到就绪状态,系统为该线程分配了除CPU外的所需资源,使该线程处于就绪状态。此外,如果某个线程执行了yield()方法,那么该线程会被暂时剥夺CPU资源,重新进入就绪状态 |
| 运行状态(Running) | Java运行系统通过调度选中一个处于就绪状态的线程,使其占有CPU并转为运行状态。此时,系统真正执行线程的run()方法,就进入到运行状态 |
| 阻塞状态(Blocked) |
一个正在运行的线程因某些原因不能继续运行时,就进入阻塞状态。这些原因包括: 1.当执行了某个线程对象的sleep()等阻塞类型的方法时,该线程对象会被置入一个阻塞集内,等待超时而自动苏醒 2.当多个线程试图进入某个同步区域时,没能进入该同步区域的线程会被置入锁定集,直到获得该同步区域的锁,进入就绪状态。 3.当线程执行了某个对象的wait()方法时,线程会被置入该对象的等待集中,知道执行了该对象的notify()方法wait()/notify()方法的执行要求线程首先获得该对象的锁。 |
| 死亡状态(Dead) |
线程在run()方法执行结束后进入死亡状态 如果线程执行了interrupt()或stop()方法,那么它也会以异常退出的方式进入死亡状态。interrupt()方法不能中断正在运行过程中的线程,只能中断阻塞过程中的线程。 |
相关文章: