4

使用实时 Java 线程(RealtimeThreadNoHeapRealtimeThread)时,OS 级线程和 Java 线程之间是否存在 1 对 1 的关系?此外,Java 是否对在操作系统级别创建的每个进程使用 fork() 或 clone()?

4

3 回答 3

2

linux 上的 Java 线程取决于版本,但大多数现代实现使用 pthread,linux 的线程,而不是真正的进程。linux线程也被称为轻量级进程,它不是由fork调用生成的,而是由pthread调用生成的。线程在同一个进程下运行,并且可以共享一定的资源。

是的,它们是一对一的关系,(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 是否对在操作系统级别创建的每个进程使用 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 回答