优化线程池大小

时间:2015-03-13 13:51:25

标签: java optimization concurrency

his famous concurrency book中,Goetz建议可以使用

计算池中的最佳线程数
N threads = N CPU * U CPU * (1 + W/C)

W/C是等待计算比率。我想开发一个自定义Executor,它将使用ThreadPoolExecutor.setCorePoolSize()调整工作线程数量,但我不知道如何计算WC比率。假设我的应用程序使用的唯一ThreadPool如何计算该比率?

有没有办法跟踪工作线程在等待/睡眠上花费的时间? 或者有没有解决这个问题的实现?

1 个答案:

答案 0 :(得分:1)

http://docs.oracle.com/javase/7/docs/api/java/lang/management/ThreadInfo.html

此类包含

等方法

getBlockedCount()

返回与此ThreadInfo关联的线程被阻止进入或重新输入监视器的总次数。

getBlockedTime()

返回自启用线程争用监视以来,与此ThreadInfo关联的线程被阻止进入或重新进入监视器的大致累计经过时间(以毫秒为单位)。