-
(1) 对于__计算密集型__的任务,在拥有Ncpu个处理器的系统上,应该把线程池大小设为Ncpu+1个,可以达到最佳利用率
(2) 对于__包含IO操作__的任务,线程池的最佳规模应该大于Ncpu+1,粗略计算的公式是
N_threads = N_cpu * U_cpu * (1 + W/C)
其中,N_threads代表线程池最佳规模,N_cpu代表CPU数量,U_cpu代表期望的CPU使用率([0,1]), W为等待时间,C为计算时间
-
当任务需要__资源池__(例如JDBC连接池)时,线程池的规模和资源池的规模是__相互影响的__
如果每个任务都需要一个数据库连接,那么连接池的大小限制了线程池的大小;
如果数据库连接只给某个线程池使用,那么线程池的大小限制了数据库连接池的大小
chapter08_线程池的使用_2_设置线程池的大小
最新推荐文章于 2023-02-03 20:17:21 发布