并发编程 线程数选择
本文将介绍并发编程中的线程数选择。
一、线程数选择
1. CPU 密集型和 I/O 密集型
- CPU 密集型:I/O 操作时间远小于 CPU 计算时间
- I/O 密集型:I/O 操作时间远大于 CPU 计算时间
2. CPU 密集型的线程数选择
对于 CPU 密集型,多线程的目的是充分利用每个核,因此理论上应该设置为 线程数 = CPU 核心数
。
在实际应用中,一般设置为 线程数 = CPU 核心数 + 1
,当某个线程因内存页失效或其它原因导致堵塞时,额外的线程可以顶替其位置,保证每个核心的利用。
3. I/O 密集型的线程数选择
最佳线程数 = ((CPU 耗时 + I/O 耗时) / CPU 耗时) * CPU 核心数
参考
- Java 并发编程实战