1. 线程与进程的本质解析
1.1 线程的微观世界
线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单元。每个线程都有自己的程序计数器、寄存器集合和栈空间,但共享进程的堆内存和全局变量区域。这种设计使得线程间的通信效率远高于进程间通信。
以Java为例,当我们执行以下代码时:
java复制new Thread(() -> {
System.out.println("子线程执行");
}).start();
JVM会在操作系统中创建一个真实的线程实体,这个线程与主线程共享同一个JVM进程资源,但拥有独立的执行路径。
注意:虽然线程共享内存带来便利,但也引入了线程安全问题。多个线程同时修改共享变量时,需要使用synchronized或Lock等同步机制。
1.2 进程的宏观视角
进程(Process)是操作系统资源分配的基本单位,每个进程都拥有独立的虚拟地址空间、文件描述符表和安全上下文。现代操作系统通过进程隔离机制确保一个进程崩溃不会影响其他进程。
在Linux系统中,可以通过ps -ef命令查看所有运行的进程。每个进程都有唯一的PID(进程ID),而线程则共享相同的PID但拥有不同的TID(线程ID)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 并发编程的演进需求
2.1 硬件发展的必然选择
随着摩尔定律逐渐失效,CPU主频提升遇到物理极限,多核处理器成为主流。以常见的8核16线程CPU为例,要想充分利用硬件资源,就必须采用多线程编程。
java复制// Java获取CPU核心数
int cores = Runtime.getRuntime().availableProcessors();
System.out.println("可用处理器核心数:" + cores);
2.2 I/O密集型任务优化
传统单线程模型在遇到I/O操作时会阻塞整个进程,造成CPU资源浪费。多线程技术允许在等待I/O时切换执行其他任务,显著提升系统吞吐量。
典型场景对比:
- 单线程:顺序执行,总耗时=任务1耗时+任务2耗时
- 多线程:并行执行,总耗时≈max(任务1耗时, 任务2耗时)
3. 线程与进程的深度对比
3.1 资源管理机制
| 特性
