8

Javaネイティブスレッドを使用して、スレッドが実行されているプロセッサ(単一システムまたは複数システムのいずれか)を確認する方法はありますか?そうでない場合、役立つライブラリはありますか?

4

4 に答える 4

2

JVM のスレッド スケジューラは JVM 固有であるため、「普遍的な」ソリューションはありません。私の知る限り、すぐに使用できるものはありませんが、おそらく次を使用します。

  • Sun JVM;
  • Solaris - または Tom Hawtinのように Mac - のタックラインが指摘しています。
  • DTrace .

あなたは運がいいかもしれません:

  • 「ネイティブ/OS スレッド ID。これは、ホスト オペレーティング システムによって割り当てられた ID ですthread-startargs[3]
  • Solaris 固有のユーティリティを使用して、ネイティブ/OS スレッド ID を CPU にマップします。
于 2009-06-10T08:30:55.047 に答える
0

このような呼び出しは聞いたことがありません。実際には必要ではなく、プラットフォーム固有の追加のコードが必要になるため、この呼び出しがあるかどうかは非常に疑わしいです。

于 2009-06-10T08:25:05.247 に答える
0

私の知る限り、標準のJDKはそれをサポートしていません(少なくともJDK 6まで)。それが本当に必要な場合は、おそらく JNI を使用していくつかのネイティブ コールを実行する必要があります。ここで良い例を見つけることができます(これはまさにあなたが必要としているものではありませんが、良い出発点だと思います)。

ちなみに、ThreadMXBean クラスを使用して JDK から取得できる情報は他にもたくさんあり (スレッドごとの CPU 使用率など)、探しているものが見つかるかもしれませ

于 2009-06-10T09:24:16.517 に答える
0

OS は、異なる時間に異なるプロセッサでスレッドをスケジュールします。そのため、特定の瞬間に各スレッドが実行されている場所のスナップショットを取得したとしても、ミリ秒以内に古くなる可能性があります。

あなたが解決しようとしている問題は何ですか?おそらく、これを知らなくてもやりたいことをすることができます。

于 2009-06-12T02:56:06.800 に答える