状态
创建(New)
创建后尚未启动
运行(Runable)
包括操作系统线程状态中的Running和Ready
可能正在运行,也可能正在等待为它分配执行时间
无限期等待(Waiting)
不会被分配CPU时间,等待被其他线程显示唤醒。
Object.wait()没有设置Timeout
Thread.join()没有设置Timeout
LockSupport.park()
期待等待(Timed Waiting)
不会被分配CPU时间,但是不需要等待其他线程唤醒,在一定时间后由系统自动唤醒
Thread.sleep()
Object.wait()设置了Timeout
Thread.join()设置了Timeout
LockSupport.parkNanos()
LockSupport.parkUntil()
阻塞(Blocked)
阻塞等待 获取一个排他锁,另外一个线程放弃这个锁的时候发生,线程进入同步区域,进入阻塞
结束(Terminated)
已终止线程的状态。线程已经结束执行。
状态切换
线程调度方法
抢占式,分优先级
参考:深入理解java虚拟机