在他著名的并发书籍中,Goetz建议可以使用以下方法来计算线程池中的最佳线程数:
N threads = N CPU * U CPU * (1 + W/C)
"W/C"代表等待计算比率。我想开发一个自定义的
Executor
,使用ThreadPoolExecutor.setCorePoolSize()
来调整工作线程数量,但我不知道如何计算WC比率。假设这个ThreadPool
是应用程序唯一使用的,我该如何计算这个比率?有没有一种方法可以跟踪工作线程花费在等待/休眠上的时间?或者有没有解决这个问题的实现?"