2009-05-15 13 views
2

Thread.sleep(t)でwhile(true)ループで動作するスレッドを作成すると、tでウェイクアップしてJavaでTimerを作成するよりもCPU消費量が多いようです? JVMの専門知識を持つ人は、これがなぜなのかを知っていますか?私はWindowsとLinux x86でこれを実際に試しただけです。TimerとJavaのスレッドプリミティブ

+2

サンプルコードを投稿した場合、この説明からわからない微妙なことがあるかもしれません。 –

答えて

1

Javadoc for the Timer classによると、作業を行い、バックグラウンドスレッドがあります:各Timerオブジェクトに対応

は順次、タイマーのタスクをすべて実行するために使用される単一のバックグラウンドスレッドです。タイマータスクはすばやく完了します。タイマータスクが完了するまでに時間がかかると、タイマーのタスク実行スレッドを「奪い取る」。これは、順番に、後続のタスクの実行を遅延させる可能性があり、最終的に問題のあるタスクが完了したとき(およびその場合)、迅速に連続して実行されます。

どのようにCPU使用率を監視していますか?あなたはJVMプロファイラを試しましたか?

+0

私はJConsoleやVisualVMを使ってみることはできますが、私はそうではありません。私は単に静かなマシン上のウィンドウでTaskManagerを使用していました。 –

+0

私はそれが何を報告しているのか非常に疲れています。決して決定的なプロファイリングツールではありません。 VisualVMを使ってアプリケーションのプロファイリングを行ってみてください。これにより、より詳細な情報が得られます。 –