JAVA|智能仿真并发项目-并行与并发

文章目录

一、核心定义

概念 核心定义 比喻
并发(Concurrency) 同一时间段内处理多个任务(任务交替执行,CPU 核心数 ≤ 任务数) 一个厨师同时处理点餐、炒菜、出餐:先炒两口菜,停下来接订单,再回去炒菜(交替做)
并行(Parallelism) 同一时刻执行多个任务(任务同时执行,CPU 核心数 ≥ 任务数) 两个厨师同时炒菜,一个炒番茄炒蛋,一个炒青椒肉丝(同时做)

补充:

  • 并发的核心是任务切换(CPU 时间片轮转),看似 "同时"(宏观),实则 "交替"(微观)
  • 并行的核心是任务同时执行,依赖多核 CPU 硬件支持
  • 并发是 "处理多任务的能力",并行是 "同时执行多任务的状态"

二、底层原理

1. 并发的实现原理(单核 CPU 场景)

单核 CPU 无法真正并行执行多个线程,只能通过时间片轮转调度算法实现并发:

  1. CPU 给每个线程分配极短的时间片(如 10ms)
  2. 线程 A 执行 10ms 后,CPU 保存线程 A 的上下文(执行状态),切换到线程 B
  3. 线程 B 执行 10ms 后,再切换回线程 A,恢复上下文继续执行
  4. 由于切换速度极快(纳秒级),人类宏观感知上像 "同时执行"

2. 并行的实现原理(多核 CPU 场景)

多核 CPU 中,不同核心可以同时执行不同线程:

  • 线程 A 在 CPU 核心 1 执行,线程 B 在 CPU 核心 2 执行
  • 两个线程无切换,真正 "同时" 运行,效率更高
  • 多核 CPU 中,既可以有并发(同一核心交替执行多任务),也可以有并行(多核心同时执行多任务)

三、适用场景

场景类型 推荐 原因
IO 密集型任务(如网络请求、文件读写) 并发 任务大部分时间在等待 IO,CPU 空闲时可切换执行其他任务,提升吞吐量
CPU 密集型任务(如大数据计算、数值运算) 并行 任务需要持续占用 CPU,多核并行可避免上下文切换,大幅缩短总耗时
任务间有依赖关系(如任务 B 依赖任务 A 的结果) 并发 无法并行执行,只能通过并发调度顺序执行
任务间完全独立(如多个独立的计算任务) 并行 多核同时执行,效率最大化

注意:只有在CPU多核情况下才能提高效率,单核情况下依旧是轮流执行

四、总结

  1. 核心区别:并发是 "交替处理多任务"(单核),并行是 "同时执行多任务"(多核)
  2. 底层支撑:并发依赖 CPU 时间片轮转,并行依赖多核硬件
相关推荐
jiunian_cn2 小时前
【C++】线程库
开发语言·c++
sheji34162 小时前
【开题答辩全过程】以 食堂兼职管理系统为例,包含答辩的问题和答案
java·eclipse
漫漫求2 小时前
1、IM:基础连接
开发语言·后端·golang
沛沛老爹2 小时前
从Web到AI:多模态Agent图像识别Skills开发实战——JavaScript+Python全栈图像处理方案
java·javascript·图像处理·人工智能·python·rag
朴实赋能2 小时前
人工智能大模型+智能体:建筑行业数字化转型的“三级金字塔“实践路径
java·后端·struts
enjoy编程2 小时前
Spring-AI Agent Skills 赋予AI智能体“即插即用”的专业超能力 --II
java·人工智能·spring
学习java的小库里2 小时前
EasyExcel复杂导出
java·前端
u0104058362 小时前
使用Spring Boot实现配置中心
java·spring boot·后端
brave_zhao2 小时前
javafx下启动spoon和carte
java