new(新建):
当程序使用 new 创建一个线程后, 该线程处于新建状态, 此时它和其它 java 对象一样, 仅仅由 JVM 为其分配内存并初始化成员变量值.
runnable(可运行状态):
实际上可以细分成两种状态: ready(就绪) 和 running(运行) 状态.
ready(就绪):
当线程对象调用 start() 方法后, 该线程处于就绪状态, 进入线程队列排队. 此时该状态线程并未开始执行, 仅表示可以运行了. 至于该线程何时运行, 取决于 CPU 调度器的调度.
running(运行):
表示某线程对象被 CPU 调度器调度, 执行线程体. 就绪状态和运行状态时可以互相切换的, 切换的原因依旧参照 CPU 调度器调度了哪一个线程.
blocked(阻塞):
正在运行的线程遇到某个特殊情况, 比如同步, 等待I/O操作完成等. 进入阻塞状态的线程会让出 CPU 资源, 并暂时停止自己的执行.
waiting(等待):
有时一个可运行状态线程转变成等待状态, 它会等待另一个线程来执行一个任务, 一个等待状态的线程只有通过另一个线程通知它转到可运行状态, 才能继续执行.
timed waiting(计时等待):
计时等待状态是等待状态的升级版, 它会有一个定时器, 在特定时间后自动唤醒该线程对象, 让其进入可运行状态.
terminated(终止):
即死亡状态, 表示线程终止. 当线程成功执行完成或线程抛出未捕获的 Exception 和 Error 或调用线程的 stop 方法时进入该状态.
网友评论