2009-07-13 4 views
1

それぞれのThread.run()が適切なカーネルスレッドを実行するようにThreadクラスを使用するJavaプログラムを実行したいとします。コマンドラインパラメータをJava VMに渡すことでこれを実現する方法はありますか?私は、Windowsマシン上でJava 1.5 SDK(およびjre1.5.0_18)を使用してEclipseを実行しています。私は-XX:+ UseBoundThreadsを使ってみましたが、タスクマネージャは同じコア(他のコアはアイドル)上の両方のスレッド(デュアルコアマシンを使用しています)を実行しているようです。EclipseでJava VMを使用するネイティブスレッド

ありがとうございました。

答えて

2

Windows JVMは常にネイティブスレッドを使用します。ただし、各スレッドを実行するコアを決定するのはカーネルの責任です。 2つのスレッドの開始が2つのコア間で共有されるという保証は全くありません。

ちなみに、私はUseBoundThreadsオプションはsolarisだと思っていますが、それについてはあまりよく分かりません。

6

私は、Threadクラス 適切なカーネルスレッドを実行している中、このようなこと 各Thread.run()の結果を使用するJavaプログラム を実行したいと思います。

Thread.run()に電話すると、別のスレッドを作成することはなく、メインスレッドですべてを順番に実行しています。あなたがしなければならないのはThread.start()です。新しいスレッドが作成され、Thread.run()が実行されます。

+2

Heh、good catch :) – skaffman

+0

申し訳ありませんが、Thread.run():私は実際にコードでThread.start()を呼び出していました。私はrun()とstart()を混ぜて、この質問を書いています。 –

1

jvisualvmで接続して、実行中のスレッドと使用しているCPUの量を確認できます。

0

ありがとうございました。正解はわかりませんが、EclipseのJava 1.6では、私が見ているコードベースのデュアルコアのパフォーマンスがほぼ2倍になっています...また、 jvisualvmはプロファイラとして素晴らしい作品です。ありがとう!

関連する問題