如何判断是io密集型还是cpu密集型
指标 |
CPU 密集型 |
I/O 密集型 |
CPU 使用率 |
高(接近100%) |
低(<30%) |
线程状态 |
RUNNABLE(持续运行) |
WAITING / BLOCKED(等待外部资源) |
性能瓶颈 |
CPU 核心数量 |
网络带宽、磁盘速度、数据库并发限制 |
io密集型、cpu密集型的含义与特点及常见操作
类别 |
含义 |
特点 |
常见任务 |
CPU 密集型 |
主要依赖 CPU 运算能力 |
需要大量计算资源,线程等待的是 CPU 时间 |
计算哈希值、压缩/解压、图像处理、机器学习训练等 |
I/O 密集型 |
主要依赖输入输出操作 |
线程大部分时间在等待 I/O 操作完成(如磁盘、网络) |
数据库查询、文件读写、网络请求、日志写入等 |
io密集型与cpu密集型的代码处理方式
任务类型 |
推荐并发方式 | |
CPU 密集型 |
parallelStream + 多核利用 | |
I/O 密集型 |
自定义线程池 + 异步处理 |