4

制御された方法ではありますが、Javaプログラムを使用してCPU使用率を上げたいと考えています。たとえば、ユーザーは「高」、「中」、「低」などのパラメーターを指定でき、ユーザーの選択に応じてCPUを一定量増やすことができるはずです。高の場合は5%、中の場合は3%、低の場合は1%増やしたいとしましょう。これは、クリーンで効率的な方法(whileループとforループを使用するだけでなく)で可能ですか?はいの場合、精度と精度はどのように、そして何になりますか?

前もって感謝します

4

3 に答える 3

2

Thread.sleep()コードにsleepステートメント(例)を挿入し、可変遅延を使用して負荷を変更することにより、Javaプログラムで発生するCPU負荷を変更できます。最も単純なケースは、ロードするCPUコアごとに個別のスレッドで実行されるループ内のスリープステートメントです。

とは言うものの、Javaはこのタスクには適していません。実際に、記述している種類の精度が必要な場合はそうではありません。ガベージコレクターやその他の要因により、その動作はかなり予測不可能になります。

私自身のアプリケーションでは、同じ入力に対して10%の範囲でスループットの変動が定期的に発生しますが、明らかな原因はありません。このため、Javaはリアルタイムアプリケーションにも適していないと見なされています。

そのようなことをするために必要な目的、そしておそらく、 Javaで行う必要がある理由について言及した場合、より良い答えを提供するのに役立つかもしれません...

于 2012-04-04T13:10:12.370 に答える
0

スレッドが1つしかないJavaプログラムを作成します。つまり、メインメソッドで、実行を継続する無限のwhileループを作成します。CPU使用率が増加することがわかります。このwhileループでスリープがない場合は、プログラムがほぼ100%のCPUを使用していることがわかります。このwhileループに入れるスリープが多いほど、プログラムで使用するCPU使用率は低くなります。

于 2012-04-04T11:37:48.827 に答える
-1

CPU使用率は、基盤となるオペレーティングシステムによって制御されます。OSは、特定のタスクを実行するために必要なCPU使用率を決定します。CPU使用率はOSによって制御されるため、Javaを介して直接制御することはできません。

実行できる唯一のことは、スレッドの優先度を変更してCPU使用率を間接的に制御するか、スレッドを一定時間スリープ状態にすることです。

于 2012-04-04T11:15:48.510 に答える