我有一个服务器程序,它会轮询数据库以获取新的请求。我希望这种轮询每1分钟执行一次,所以在程序while循环中设置了Thread.sleep()。问题是每当程序需要“休眠”时,CPU利用率就会急剧增加(约25-30%)。但奇怪的是,当程序没有休眠并忙于处理请求时,CPU利用率降至0.4%。
我在网上阅读了一些资料,发现Thread.sleep会影响性能,但我找不到任何可行的替代方案(Thread.wait需要在对象上进行通知,在我的情况下无用)。
当没有新请求时,主循环不做任何事情,以下是CPU利用率为25%时正在执行的所有操作:
-> 轮询 -> 没有新记录? -> 休眠 -> 重复
我在网上阅读了一些资料,发现Thread.sleep会影响性能,但我找不到任何可行的替代方案(Thread.wait需要在对象上进行通知,在我的情况下无用)。
当没有新请求时,主循环不做任何事情,以下是CPU利用率为25%时正在执行的所有操作:
-> 轮询 -> 没有新记录? -> 休眠 -> 重复
while
循环的剩余部分在做什么? - user207421Thread.sleep(60)
来让程序休眠60秒,对吧?(这会导致程序只休眠60毫秒) - Eran