前言
关于最佳线程数的设置,总是那么模糊,不知道该如何设置,偶然间在 Java 并发编程实践
里看到了对他的定义:
要使处理器达到期望的使用率,线程池的最佳大小等于:
1695055395.jpg
需要注意的是,我们需要制定一个 CPU 的利用率,如果是 100%,那么线程数就取决于Wait Time / Compute Time
- 如果我们的任务是计算型任务,那么等待时间为零,那么线程数设置为 CPU + 1
- 如果我们的任务是 IO 密集型,那么等待时间不为零,需要加大线程数
Java 中获取可用的 CPU 数
Int NUM_CPU = Runtime.getRuntime().availableProcessors();
我们可以在很多类库里边看到它的身影,很多需要线程池的类库,凡是不那么抢系统资源的都会通过这个值设置线程池的大小
网友评论