操作系统中线程/进程状态的变迁
图一
新的:刚创建一个新的线程还没执行相应的start方法。
就绪态:线程执行所需要的资源都已经满足了,就差CPU分配的时间片了
运行态:正在使用CPU时间片执行代码
等待:正在等待获取某些资源或某个事件的发生
终止:执行完程序
运行态——》就绪态:CPU分配的时间片到了,操作系统给出一个中断,对该线程进行上下文切换,使其进入就绪态。
就绪态——》运行态:拿到CPU时间,从PCB载入上次执行的信息,继续 运行程序
运行——》等待:正在运行的程序需要获取额外的资源如:锁,I/O.或某个事件的发生。
等待——》就绪:已经获取到运行所需要的资源。
JAVA 中线程状态的变迁
图二
java 中线程状态的变迁细化了操作系统的状态的变迁。多了阻塞态,和超时等待。进入阻塞态的线程是想进入同步块。至于JVM为何要这样定义其线程的状态,我想可能是为了编程人员更好的操作线程吧。
图一:来源于《操作系统概念第七版》
图二:来源于《Java并发编程的艺术》