当我运行单线程Java程序时,为什么在操作系统级别有多个线程?

当我运行单线程Java程序时,为什么在操作系统级别有多个线程?,java,multithreading,Java,Multithreading,我运行一个非常简单的单线程java程序。当我在Ubuntu下使用命令检查线程时 ps -eLf 它显示在操作系统级别有14个线程。当程序有一个线程时,我希望只有一个线程,如果程序有x个线程,则有x个线程。我的期望错了吗?JVM有自己的线程,比如垃圾收集器。尝试在其上执行一个kill-3,它将显示所有线程。我相信Java虚拟机每次启动时都会打开多个操作系统线程,这就是您看到所看到的内容的原因。另外,我不确定Java线程类是否使用本机线程。JVM有多个线程在运行。这就是为什么你会看到这么多线程的原

我运行一个非常简单的单线程java程序。当我在Ubuntu下使用命令检查线程时

ps -eLf

它显示在操作系统级别有14个线程。当程序有一个线程时,我希望只有一个线程,如果程序有x个线程,则有x个线程。我的期望错了吗?

JVM有自己的线程,比如垃圾收集器。尝试在其上执行一个
kill-3
,它将显示所有线程。

我相信Java虚拟机每次启动时都会打开多个操作系统线程,这就是您看到所看到的内容的原因。另外,我不确定Java线程类是否使用本机线程。

JVM有多个线程在运行。这就是为什么你会看到这么多线程的原因。

现在几乎所有主流jvm都使用本机线程。我的预期错了吗?是的,大错特错了。