我有一个应用程序,它可能会同时使用数百甚至数千个线程,每个线程固定一段时间。
线程池的大小应该是多少? - 这个数字是否有经验法则公式。我明白使用处理器的数量是一个可取的数字。是设定的最大数量吗?
答案 0 :(得分:1)
对于CPU绑定任务,它应该是处理器数量。
int N = Runtime.getRuntime().availableProcessors();
对于I / O绑定任务,它可能超过处理器数量,因为在I / O密集型任务期间可能无法使用某些线程。您应该估计平均I / O请求的等待时间比率。获得此比率RT后,您可以使用公式N *(1 + RT),其中N是处理器数。