1

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

ありがとう。

4

4 に答える 4

6

各 Thread.run() が適切なカーネル スレッドを実行するように、Thread クラスを使用する Java プログラムを実行したいと考えています。

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

于 2009-07-13T09:22:55.203 に答える
2

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

ちなみに UseBoundThreads オプションはsolarisだけだと思いますが、よくわかりません。

于 2009-07-13T09:20:05.787 に答える
0

ありがとうみんな..正しい答えはわかりませんが、現在、EclipseのJava 1.6は、私が見ているコードベースのデュアルコアでほぼ2倍のパフォーマンスを提供しています...また、jvisualvmは次のようにうまく機能しますプロファイラー..ありがとう!

于 2009-07-20T09:49:03.960 に答える