私はこのように構成されたデーモンを書きました:
while( true ) {
// do some stuff
Thread.sleep( 1000 );
}
100%までという非常に大量のCPUを使用していることに気付きました。同じCPUの問題が発生する数か月間、運用サーバーに同様のデーモンがありました。
昨日、TimerTaskを使用するようにコードをリファクタリングしました。すぐに、開発ボックスのCPU使用率が低下していることに気付きました。そこで私は本番環境にデプロイし、Muninを使用して再確認することにしました。ここにグラフがあります:
いくつかのポイント:
So: why is Thread.sleep so inefficient compared to TimerTask?
Three possibilities I can think of:
continue;
statement somewhere in your loop before the sleep, so even if the main body of work of the loop isn't executing very frequently, something is. It's hard to say without seeing some more concrete code though.繰り返し実行するだけの単純なループThread.sleep(1000)
は非常に安価である必要があります。これも簡単に確認できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加