Java8 关于最佳线程数

前言

关于最佳线程数的设置,总是那么模糊,不知道该如何设置,偶然间在 Java 并发编程实践 里看到了对他的定义:

要使处理器达到期望的使用率,线程池的最佳大小等于:


1695055395.jpg

需要注意的是,我们需要制定一个 CPU 的利用率,如果是 100%,那么线程数就取决于Wait Time / Compute Time

  • 如果我们的任务是计算型任务,那么等待时间为零,那么线程数设置为 CPU + 1
  • 如果我们的任务是 IO 密集型,那么等待时间不为零,需要加大线程数

Java 中获取可用的 CPU 数

Int NUM_CPU = Runtime.getRuntime().availableProcessors();

我们可以在很多类库里边看到它的身影,很多需要线程池的类库,凡是不那么抢系统资源的都会通过这个值设置线程池的大小

你可能感兴趣的:(Java8 关于最佳线程数)