vac*_*ach 7 java concurrency optimization
在着名的并发书中,Goetz建议使用可以计算池中最佳线程数
N threads = N CPU * U CPU * (1 + W/C)
Run Code Online (Sandbox Code Playgroud)
W/C是等待计算比率.我想开发一个Executor用于调整工作线程数量的自定义ThreadPoolExecutor.setCorePoolSize(),但我不知道如何计算WC比率.假设这ThreadPool是我的应用程序使用的唯一一个如何计算该比率?
有没有办法跟踪工作线程在等待/睡眠上花费的时间?或者有没有解决这个问题的实现?
http://docs.oracle.com/javase/7/docs/api/java/lang/management/ThreadInfo.html
这个类包含类似的方法
getBlockedCount()
返回与此 ThreadInfo 关联的线程被阻止进入或重新进入监视器的总次数。
getBlockedTime()
返回自启用线程争用监视以来与此 ThreadInfo 关联的线程被阻止进入或重新进入监视器的大致累计经过时间(以毫秒为单位)。