9

私のアプリケーションは大量のJavaスレッドを使用しています。JVM(バージョン5および6)がJavaスレッドを基盤となるWindowsスレッドにマップする方法を確実に理解することを求めています。Solarisスレッドにマッピングするためのドキュメントがあることは知っていますが、Windowsにはありません。

Sunがこの情報を公開しないのはなぜですか?

1:1マッピングがあるかどうか、またはそれがJVM、-serverオプション、ワークロードなどによって異なるかどうかを知りたいです。

私は気にする必要がないことを知っています。適切に同期されたコードを書く必要がありますが、大量のコードを継承しています...

また、Windowsスレッドに名前を付ける方法を知っている人はいますか?

4

4 に答える 4

7

ドキュメントはありませんが、タスクマネージャーの[スレッド]列から、ネイティブスレッドに1:1でマップされていることがかなり確実に推測できます(最初にタスクマネージャーの[スレッド]列を有効にする必要があります)。

ああ、ほとんど忘れてしまいました。ここからjdk srcをダウンロードして、自分の目で確かめてください。

于 2008-11-03T15:19:08.620 に答える
1

マッピングはプラットフォームに依存しますが、VM のプラットフォーム スレッド間の興味深い比較を見つけました(おそらく少し古いですが)。肝心なのは、知る必要がないということです。おそらくもっと興味があるのは、グリーン スレッドについて知ることです (まだ知らない場合)。

ネーミングの質問については、コンストラクターでスレッドに名前を付けることはできませんか? それとも、それらに名前を付けて、一部の Windows スレッド ブラウザでその名前を表示するという意味ですか?

于 2008-11-03T15:52:48.053 に答える
0

Win32 スレッドに名前を付ける方法

残念ながら、Windows JVM 内でこれを行うのは不可能か、少なくとも非常に難しいようです。

于 2008-11-03T15:54:38.860 に答える
0

JVM 仕様は、この点に関して厳密には何も述べていません。Javaスレッドをプラットフォームスレッド(Windows、Linuxなど)にマップすることは、JVM実装者に任されています。また、Java スレッドと OS スレッドの間に 1 対 1 のマッピングがあるとは信じがたいです。

于 2012-10-17T11:40:30.233 に答える