一个线程可以处于以下4种状态之一:
- 新建(new):当线程被创建时,它会短暂地处于这种状态,它已经被分配了系统资源,并进行了初始化。之后调度器将它转变为就绪状态或阻塞状态。
- 就绪(runnable):只要调度器把时间分片分给任务,任务就可以运行,任意时刻,线程可以运行可与不运行,这点不同于死亡和阻塞。
- 阻塞(blocked):线程能够运行,但某个条件阻止它运行,调度器将忽略被阻塞的线程,不分配时间分片,直到线程重新变为就绪状态。
- 死亡(dead):它的任务已结束,不会获得时间分片、也不可调度。线程的死亡通常从run方法返回,也可以被interrupt方法中断。
任务处于阻塞状态可能有如下原因之一:
- 调用sleep使任务休眠
- 调用wait使任务挂起
- 任务等待某个IO流
- 任务尝试获得同步块、方法的锁,但是锁已经被锁定,任务等待锁的释放
|
|