4

リアルタイム Java スレッド ( または のいずれRealtimeThreadNoHeapRealtimeThread) を使用する場合、OS レベルのスレッドと Java スレッドの間に 1 対 1 の関係がありますか? また、Java は OS レベルで作成されたプロセスごとに fork() または clone() を使用していますか?

4

3 に答える 3

2

Linux の Java スレッドはバージョンによって異なりますが、最近のほとんどの実装では、実際にはプロセスではなく、Linux のスレッドである pthread を使用しています。Linux スレッドは軽量プロセスとも呼ばれ、fork 呼び出しではなく pthread 呼び出しによって生成されます。スレッドは同じプロセスで実行され、特定のリソースを共有できます。

はい、それらは 1 対 1 の関係 (ps -Lf) ですが、OS スレッド ID は jvm だけが知っているマジック ナンバーであるため、どれがどれであるかを見つけるのは非常に困難です。

以下の記事が参考になるはずです。

http://linuxprograms.wordpress.com/2007/12/19/linux-kernel-support-for-threads-light-weight-processe/

于 2011-05-09T04:17:53.203 に答える
0

Javaは、OSレベルで作成されたプロセスごとにfork()またはclone()を使用していますか?

Runtime.exec()によって作成されたプロセスを意味する場合は、fork()を使用する必要があります。まだスレッドを参照している場合、スレッドはプロセスではないため、fork()を使用できません。

于 2011-05-09T05:03:03.203 に答える
-1

Sun/Oracle JVM を使用した RedHat 3.x - 5.x で見たものから、Java スレッドごとに 1 つの OS プロセスです。ただし、フォークとクローンについてはわかりません。

于 2011-05-09T02:29:26.737 に答える