我们做程序开发都会使用到线程,而关于线程的状态呢,江湖流传了很多版本,众说纷纭。有江湖的地方就有纷争,播妞本次为大家分享的微课将深入浅出探究Java中的线程状态,根据官方定义与源码,学习Java中的线程状态。本课程通过案例驱动方式深入研究Java中线程的六种状态,再通过画图的方式理解线程间的转换,其中涉及了源码的查看以及案例的设计,增强了学习的趣味性。感兴趣的同学们,切勿错过本次学习哦~本次课程大纲:
l Java 线程状态之 NEW l Java 线程状态之 RUNNABLE l Java 线程状态之 BLOCKED l Java 线程状态之 WAITING l Java 线程状态之 TIMED_WAITING l Java 线程状态之 TERMINATED ... ...部分资料展示:选自OS进程状态 VS JVM线程状态
第一章 OS 操作系统进程(传智播客版权) 1.1 进程的引入 提起进程这个概念,让很多经常使用计算机的人感到陌生,其实我们经常和它打交道,只要在计算机上运行一个程序,相应的一个进程就诞生了,而且它伴随着整个操 作过程,直到程序终止。进程在操作系统中是一个非常抽象、非常重要、非常难以理解的概念。对进程概念的深入透彻的理解,有助于理解操作系统中的各种机制原 理。 1.2 什么是进程 进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。简单理解为当一个程序进入到内存就形成了进程,进程也就是程序的一次执行过程。 进程状态:反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。进程状态即体现一个进程的生命状态。 进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。在三态模型中,进程状态分为三个基本状态,即运行态,就绪态,阻塞态。在五态模型中,进程分为新建态、终止态,运行态,就绪态,阻塞态。 对应英文即:new,ready,running,waiting,terminated。 1.3 三态模型 在一个进程的执行过程中,从创建到消亡的整个生命期间,有时占有CPU处理器执行,有时虽可运行但分不到CPU处理器、有时虽有空闲处理器但因等待某个事件的发生而无法执行,这一切都说明进程和程序不相同,代表着程序的生存状态,它是活动的且有状态变化的,这可以用一组状态加以刻画。为了便于管理进程,一般来说,按进程在执行过程中的不同情况至少要定义三种不同的进程状态: [img=8,8]就绪态(ready):进程具备了运行条件,等待CPU分配才能运行。 运行态(running):进行正在执行,CPU正在处理该程序。 等待态(waiting):又称为阻塞态(blocked),指进程正在等待某件事情完成,不具备运行的状态。 通常,一个进程在创建后将处于就绪状态。每个进程创建之后,在执行过程中,任意时刻当且仅当处于上述三种状态之一。当然最终都会被终止,进入死亡状态。 从理论上分析有6种状态转换,我们就一一来说一下: 存在的: 1. 就绪态---->运行态:其他进程时间片用完,CPU空闲时被调度选中一个就绪进程执行。 2. 运行态---->就绪态:分配给每个进程的时间片是有限的,运行时间片到了就进入到就绪状态,或出现有更高优先权进程。 3. 运行态---->等待(阻塞)态:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求(等待外设传输)。 4. 等待(阻塞)态---->就绪态:进程所等待的事件已经发生,就进入就绪队列。 还有两种不可能存在的转换: 1. 等待(阻塞)态---->运行态:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取。 2. 就绪态---->等待(阻塞)态:就绪态根本就没有执行,谈不上进入等待态。 三态之间转换如图: 资料节选自第一章 OS 操作系统进程(传智播客版权) 网盘资料截图展示: 网盘资料下载链接已添加(回帖可见哦~) |