Rob*_*son 10 java cpu multithreading timertask
我写了一个守护进程,结构如下:
while( true ) {
// do some stuff
Thread.sleep( 1000 );
}
Run Code Online (Sandbox Code Playgroud)
我注意到它使用了非常大量的CPU - 高达100%.我的生产服务器上有一个类似的守护进程已经有几个月存在相同的CPU问题了.
昨天我重构了使用TimerTask的代码.我立即注意到我的开发盒上的CPU使用率有所下降.所以我决定使用Munin部署到生产和双重检查.以下是图表:


几点:
那么:与TimerTask相比,为什么Thread.sleep效率低下?
Jon*_*eet 11
我能想到的三种可能性:
continue;在睡眠之前,你的循环语句的地方,所以即使循环的工作主体不执行很频繁,一些是.如果没有看到更具体的代码,很难说.一个简单的循环只是Thread.sleep(1000)反复执行应该非常便宜 - 这也应该很容易验证.
| 归档时间: |
|
| 查看次数: |
1438 次 |
| 最近记录: |