リアルタイム Java スレッド ( または のいずれRealtimeThread
かNoHeapRealtimeThread
) を使用する場合、OS レベルのスレッドと Java スレッドの間に 1 対 1 の関係がありますか? また、Java は OS レベルで作成されたプロセスごとに fork() または clone() を使用していますか?
質問する
1004 次
3 に答える
2
Linux の Java スレッドはバージョンによって異なりますが、最近のほとんどの実装では、実際にはプロセスではなく、Linux のスレッドである pthread を使用しています。Linux スレッドは軽量プロセスとも呼ばれ、fork 呼び出しではなく pthread 呼び出しによって生成されます。スレッドは同じプロセスで実行され、特定のリソースを共有できます。
はい、それらは 1 対 1 の関係 (ps -Lf) ですが、OS スレッド ID は jvm だけが知っているマジック ナンバーであるため、どれがどれであるかを見つけるのは非常に困難です。
以下の記事が参考になるはずです。
于 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 に答える