目标:
1. 了解进程与线程的关系
2. 进程调度的基本过程
进程与线程的关系
在我们学习进程调度前,我们先了解一下进程与线程:
1.进程是线程的容器
进程包含线程,一个进程里可以有一个线程,也可以有多个线程。
多个线程可以在同一个进程内共享进程的资源,如内存和文件,以实现并发执行。
2.资源分配
进程是操作系统分配资源的基本单位,每个进程都有自己的内存空间,独立分配的CPU时间片,以及其他系统资源。
线程共享所属进程的资源,它们通常更轻量级,创建和切换线程的开销较小。
3.并发性
进程和线程都可以用于实现并发性!!!
多个进程可以在不同的地址空间中并发执行,而多个线程共享相同的地址空间。(可以更容易地共享数据和协同工作)
4.独立性
进程是相互独立的,一个进程挂掉不会影响其他进程。
线程的崩溃会影响同一进程下的其他线程。
进程调度的基本过程
1.进程或线程创建
进程通过创建不同的 java 虚拟机实际来实现,线程通过"java.lang.Thread" 类创建。
2.资源分配
java 虚拟机管理线程和和进程的资源分配(cpu时间片,内存,其他系统资源)。
每个线程堆栈和程序计数器(共享相同的堆内存)。
3.线程调度
确定哪个线程应该在CPU上执行(java虚拟机线程调度器)
4.线程状态
就绪状态:线程已准备好执行
运行状态:线程正在执行
阻塞状态:线程被阻止等待某些条件
终止状态:线程已完成执行
5.调度策略
决定哪个线程应该执行(java虚拟机线程调度器)
6.线程同步
java中提供同步机制:锁,条件变量,确保多个线程之间的正确协调和共享资源的安全访问。这有助于避免竞态条件和死锁等问题(后面我会再整理死锁问题)。
7.线程终止
当线程完成其任务或出现异常时,它将进入终止状态。(可以正常终止或被强制终止)