Linux上的实时Java线程和OS级别线程

时间:2011-05-09 01:12:26

标签: java real-time-java linuxthreads

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

3 个答案:

答案 0 :(得分:2)

Linux上的Java线程取决于版本,但大多数现代实现使用pthread,linux的线程,而不是真正的进程。 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/

答案 1 :(得分:0)

  

是使用fork()或clone()的Java   在the创建的每个进程   操作系统级别?

如果您指的是Runtime.exec()创建的进程,则必须使用fork()。如果您仍在引用线程,则它不能使用fork(),因为线程不是进程。

答案 2 :(得分:-1)

根据我在RedHat 3.x-5.x上看到的Sun / Oracle JVM,每个Java线程都有一个OS进程。虽然不知道fork与clone。