《Java 并发编程战报(一):进程与线程的深度对线及 Java 实现》
·
1. 定义
-
进程 (Process):是操作系统分配资源的最小单位。它是“正在运行的一个程序”,比如你打开了一个 QQ,系统就开启了一个进程。
-
线程 (Thread):是操作系统运算调度的最小单位。它是进程内部的一个“执行流”,一个进程可以包含多个线程,它们合作完成任务。
2. 核心区别
| 维度 | 进程 | 线程 |
| 根本区别 | 资源分配的最小单位 | 调度和执行的最小单位 |
| 内存空间 | 相互独立。每个进程都有自己的内存地址 | 共享进程的资源(堆、方法区),但有独立的栈和计数器 |
| 开销对比 | 创建、销毁和切换的开销大 | 创建和切换非常轻量,开销小 |
| 健壮性 | 安全。一个进程崩了,不影响其他进程 | 危险。一个线程崩了,整个进程可能全军覆没 |
| 通信机制 | IPC 通信。比较复杂(信号量、管道等) | 共享内存。非常简单,但也带来了线程安全问题 |
3. 形象比喻:【工厂与工人模型】
-
进程 = 工厂:
-
工厂有自己的厂房、地皮、原材料(内存、I/O 资源)。
-
工厂与工厂之间是物理隔离的(进程间互不干扰)。
-
-
线程 = 工人:
-
一个工厂里可以有很多工人(一个进程可以有很多线程)。
-
工人们共享厂房里的水、电、原材料(共享进程资源)。
-
重点:如果工人之间抢同一个工具,就会打架(锁竞争、死锁)。如果一个工人操作失误引发爆炸,整个工厂就没了(线程崩溃导致进程结束)。
-
4.代码简述
4.1Demo1
package thread;
class MyThread extends Thread{ //继承 Thread 类是创建线程第一种方式,子类就是线程类
public void run(){ //子线程
while (true){ //子线程干活
System.out.println("hello thread");
try {
Thread.sleep(1000);
}catch (InterruptedException e){
throw new RuntimeException(e);
}
}
}
}
public class Demo1 {
public static void main(String[] args)throws InterruptedException {
//1.创建Tread类的子类,在子类中重写run方法
Thread t=new MyThread(); ////造一条线程,自带干活代码
t.start();//启动这条线程,自动跑run里的代码
while (true){
System.out.println("hello main");
Thread.sleep(1000);
}
}
}
Demo1是继承Thread
MyThread这个类本身就是一条线程, 一个类身兼二职:
- 是线程
- 里面的run()写要干的活(打印 hello Thread)
缺点: java 只能单继承,如果这个类以后还要继承别的类,就没法再继承 Thread 了.
4.2 Demo2
package thread;
class MyRunnable implements Runnable{
public void run(){ //子线程执行
while (true){
System.out.println("hello thread");
try{
Thread.sleep(1000);
}catch (InterruptedException e){
throw new RuntimeException(e);
}
}
}
}
public class Demo2 {
public static void main(String[] args)throws InterruptedException {
Runnable runnable=new MyRunnable(); //准备要做的任务
Thread t=new Thread(runnable);//创建子线程,把任务交给它
t.start();//启动子线程
while (true){
System.out.println("hello main");
Thread.sleep(1000);
}
}
}
- MyRunnable = 只存干活的任务 (只是一份工作: 打印 hello thread), 它不是线程, 不能自己启动
- Thread = 真正的线程(干活的工人 )
5.总结
-
进程是资源单位,线程是执行单位。
-
Java 创建线程推荐用 Runnable 接口,因为它更符合面向对象的设计思想(解耦)。
-
多线程是 Java EE 处理高并发请求的地基。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)