私は、新しいリクエストのためにデータベースをポーリングするサーバープログラムを持っています。このポーリングを1分間隔で実行したいので、Thread.sleep whileループ中にプログラム内の()を呼び出します。
問題は、このプログラムが "スリープ"すると仮定すると、CPU消費量が急激に増加することです(約25〜30%)。
逆に、プログラムが休止状態でなく、要求を処理中である場合、CPU消費量は0.4%に低下します。
オンラインで、thread.sleepに関連するパフォーマンスヒットがあることがわかりましたが、実行可能な代替手段が見つかりませんでした(Thread.waitはオブジェクトに関する通知が必要ですが、私のシナリオでは役に立たないと感じます)Thread.sleepを使用してスレッドがスリープ状態になっているときのCPU消費
- - >新しいレコードが
メインループ(新しい要求がない場合)ここで、何もしないではすべてのことの骨格がCPUの消費量が25%
ときに行われているのですか?
- >スリープ
- > repeat
あなたはどのくらい寝ていますか? 'while'ループの残りの部分は何をしていますか? – EJP
それは変です。記述したように動作し、ここに投稿する小さなプログラムに縮小できますか?少なくとも、スリープループのスケルトンを実際のコードを使って表示してください。 – NPE
実際に寝るコードセクションを入力してください。 –