使用实时 Java 线程(RealtimeThread
或NoHeapRealtimeThread
)时,OS 级线程和 Java 线程之间是否存在 1 对 1 的关系?此外,Java 是否对在操作系统级别创建的每个进程使用 fork() 或 clone()?
问问题
1004 次
3 回答
2
linux 上的 Java 线程取决于版本,但大多数现代实现使用 pthread,linux 的线程,而不是真正的进程。linux线程也被称为轻量级进程,它不是由fork调用生成的,而是由pthread调用生成的。线程在同一个进程下运行,并且可以共享一定的资源。
是的,它们是一对一的关系,(ps -Lf),但是很难找出哪个是哪个,因为 os 线程 id 是一个只有 jvm 知道的幻数。
下面的文章应该会有所帮助。
于 2011-05-09T04:17:53.203 回答
0
Java 是否对在操作系统级别创建的每个进程使用 fork() 或 clone()?
如果你指的是由 Runtime.exec() 创建的进程,它必须使用 fork()。如果您仍然指的是线程,则它不能使用 fork(),因为线程不是进程。
于 2011-05-09T05:03:03.203 回答
-1
从我在带有 Sun/Oracle JVM 的 RedHat 3.x - 5.x 上看到的,这是每个 Java 线程一个操作系统进程。虽然不知道 fork vs. clone。
于 2011-05-09T02:29:26.737 回答