线程状态变迁

简介:

操作系统中线程/进程状态的变迁

screenshot

                        图一
     
新的:刚创建一个新的线程还没执行相应的start方法。
    就绪态:线程执行所需要的资源都已经满足了,就差CPU分配的时间片了
运行态:正在使用CPU时间片执行代码
等待:正在等待获取某些资源或某个事件的发生
终止:执行完程序

运行态——》就绪态:CPU分配的时间片到了,操作系统给出一个中断,对该线程进行上下文切换,使其进入就绪态。
就绪态——》运行态:拿到CPU时间,从PCB载入上次执行的信息,继续 运行程序
运行——》等待:正在运行的程序需要获取额外的资源如:锁,I/O.或某个事件的发生。
    等待——》就绪:已经获取到运行所需要的资源。

JAVA 中线程状态的变迁

screenshot图二

java 中线程状态的变迁细化了操作系统的状态的变迁。多了阻塞态,和超时等待。进入阻塞态的线程是想进入同步块。至于JVM为何要这样定义其线程的状态,我想可能是为了编程人员更好的操作线程吧。

图一:来源于《操作系统概念第七版》
图二:来源于《Java并发编程的艺术》

目录
相关文章
|
6月前
|
存储 资源调度 Java
详解Java线程的几种状态
详解Java线程的几种状态
50 0
|
6月前
|
存储 Linux Go
面试官:换人!他连进程、线程、协程这几个特点都说不出
在操作系统课程的学习中,很多人对进程线程有大体的认识,但操作系统教材更偏向于理论叙述,本文会结合 Linux 系统实现分析,更加印象深刻。
|
6月前
|
数据处理
多线程与并发编程【线程对象锁、死锁及解决方案、线程并发协作、生产者与消费者模式】(四)-全面详解(学习总结---从入门到深化)
多线程与并发编程【线程对象锁、死锁及解决方案、线程并发协作、生产者与消费者模式】(四)-全面详解(学习总结---从入门到深化)
66 1
|
4月前
|
Java 调度
Java线程的六种状态
Java线程有六种状态: 初始(NEW)、运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、超时等待(TIMED_WAITING)、终止(TERMINATED)。
66 1
|
5月前
|
Java API
详细探究Java多线程的线程状态变化
Java多线程的线程状态主要有六种:新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、超时等待(TIMED_WAITING)和终止(TERMINATED)。线程创建后处于NEW状态,调用start()后进入RUNNABLE状态,表示准备好运行。当线程获得CPU资源,开始执行run()方法时,它处于运行状态。线程可以因等待锁或调用sleep()等方法进入BLOCKED或等待状态。线程完成任务或发生异常后,会进入TERMINATED状态。
21222 5
|
6月前
|
Java 调度
Java多线程基础-5:线程状态与状态的转移
本文介绍了Java中线程的五种状态:NEW、TERMINATED、RUNNABLE、TIMED_WAITING和BLOCKED,并提供了代码示例来展示状态转换。
45 0
|
6月前
|
Java 调度
多线程与并发编程【线程休眠、线程让步、线程联合、判断线程是否存活】(二)-全面详解(学习总结---从入门到深化)
多线程与并发编程【线程休眠、线程让步、线程联合、判断线程是否存活】(二)-全面详解(学习总结---从入门到深化)
51 1
|
Java
Java线程状态
Java线程状态
54 0
|
Java
Java线程的几种状态
Java线程的几种状态
51 0
|
Java 调度
关于JAVA线程五种状态的理解
关于JAVA线程五种状态的理解
178 0
关于JAVA线程五种状态的理解