2012-04-04 16 views
4

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

ありがとうございます。

答えて

2

Javaプログラムで発生するCPU負荷を変更するには、コードにsleep文(例:Thread.sleep())を挿入し、可変遅延を使用して負荷を変更します。最も単純なケースはループ内のsleep文で、ロードしたいCPUコアごとに独立したスレッドで実行されます。

つまり、Javaはではなく、で、この作業に適しています。記述する精度が実際に必要な場合ではありません。ガベージコレクタやその他の要因によって、その動作は予測できません。

私自身のアプリケーションでは、明らかに原因がなく、同じ入力に対して10%の範囲でスループットの変動を定期的に得ています。この理由から、Javaはリアルタイムアプリケーションにも適していないと考えられています。ほとんどが間違っているあなたがのJavaで行う必要がある理由は、おそらく、と...

+0

実際、他のアプリケーションの処理能力をシミュレートする私のアプリケーションは、別の言語では利用できない別のJAVAライブラリを使用します。だから私はJAVAでそれを行う必要があります。 – user1063185

-1

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

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

+0

- それはあなたがそのような何かをする必要がどのような目的のために言及した場合、私たちはより良い答えを提供するのに役立つかもしれない

。 .. – jarnbjo

+0

詳しく教えてもらえますか?私はそれについて学びたいと思います。 –

0

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

関連する問題