用于固定池的Java Executors Service

时间:2017-09-09 13:11:12

标签: java multithreading threadpool

我有一个应用程序,它可能会同时使用数百甚至数千个线程,每个线程固定一段时间。

线程池的大小应该是多少? - 这个数字是否有经验法则公式。我明白使用处理器的数量是一个可取的数字。是设定的最大数量吗?

1 个答案:

答案 0 :(得分:1)

对于CPU绑定任务,它应该是处理器数量。

int N = Runtime.getRuntime().availableProcessors();

对于I / O绑定任务,它可能超过处理器数量,因为在I / O密集型任务期间可能无法使用某些线程。您应该估计平均I / O请求的等待时间比率。获得此比率RT后,您可以使用公式N *(1 + RT),其中N是处理器数。