文章目录
- 前言
- 1. 程序、进程和线程的区分:
- 2. 线程调度策略:
- 3. 单核CPU与多核CPU、并行与并发:
前言
Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。
1. 程序、进程和线程的区分:
-
程序 (Program): 程序是为完成特定任务而编写的一组静态指令。它只是一段静态的代码,存储在磁盘上,没有实际执行。
-
进程 (Process): 进程是程序的一次运行实例。它是一个动态的实体,在内存中执行并由操作系统管理。每个进程都有自己独立的地址空间和资源,是操作系统调度和资源分配的最小单位。不同的进程可以相互独立运行。
-
线程 (Thread): 线程是进程中的执行路径。一个进程可以包含多个线程,这些线程共享进程的资源(如内存空间、文件句柄等),但可以独立调度和执行。线程是CPU调度和执行的最小单位。
2. 线程调度策略:
-
分时调度 (Time-sharing Scheduling): 在分时调度中,操作系统将处理器时间分成小的时间片,然后将每个时间片分配给不同的线程/进程。各个线程轮流占用处理器,确保每个线程都能获得一定的执行时间。分时调度适用于公平竞争的环境。
-
抢占式调度 (Preemptive Scheduling): 抢占式调度允许高优先级的线程中断正在执行的低优先级线程。一旦某个高优先级的线程准备好执行,操作系统可以立即暂停低优先级线程的运行,切换到高优先级线程。这种调度方式更适合实时系统和高优先级任务。
3. 单核CPU与多核CPU、并行与并发:
-
单核CPU与多核CPU:
单核CPU: 只有一个处理核心,每次只能执行一个任务(通过快速切换不同任务来模拟并发执行)。
多核CPU: 包含多个处理核心,可以同时执行多个任务,支持真正的并行处理。每个核心可以独立运行自己的线程,减少切换的开销。 -
并行 (Parallelism): 并行是在多核CPU环境下,多个任务真正同时在多个核心上执行。每个核心可以同时处理一个任务,提升执行效率。并行需要硬件支持(多核或多处理器系统)。
-
并发 (Concurrency): 并发是在单核或多核环境下,通过任务切换模拟多个任务“同时”执行。实际上,任务是在非常短的时间内轮流运行,并没有真正同时执行。并发更多是通过操作系统的调度机制来实现。