我运行了一个非常简单的单线程Java程序。当我使用Ubuntu下的命令检查线程时,它显示在OS级别有14个线程。我期望当程序有一个线程时只有一个线程,如果程序有x个线程,就有x个线程。我的期望错了吗?当我运行单线程Java程序时,为什么在操作系统级别有多个线程?
5
A
回答
10
JVM有自己的线程,比如垃圾回收器。试着在它上面做一个kill -3 <pid>
,它会显示你所有的线程。
1
我相信Java虚拟机在启动时总是会打开多个操作系统线程,这就是为什么你会看到你所看到的。另外,我不确定Java Thread类是否使用本地线程。
+0
几乎每个主流jvm都使用原生线程。 – jtahlborn 2011-06-17 13:25:46
2
JVM有多个线程在运行。这就是你看到这么多线程的原因。
相关问题
- 1. 为什么单线程java程序有这么多的线程?
- 2. forkIO线程和操作系统线程
- 3. 如何在单线程中使用java实现多线程操作系统?
- 4. 进程和线程在操作系统
- 5. Java线程和操作系统线程之间的通信
- 6. 无效Java线程和本地操作系统线程
- 7. 是否多线程Java进程比操作系统的单线程程序更经常地调度?
- 8. 为什么我的多线程执行是单线程模式
- 9. Java多线程系统
- 10. 为什么我的C#应用程序在多线程单元上运行?
- 11. 为什么在单线程,双线程和三线程程序中运行ExecutorService的时间相同?
- 12. 实时嵌入式操作系统的线程调度程序
- 13. 时间多线程和超线程之间有什么区别?
- 14. 当新线程立即操作UI时,为什么没有CalledFromWrongThreadException?
- 15. 我该如何要求操作系统在另一个内核上运行每个线程? - Linux操作系统
- 16. 单程序操作系统
- 17. 为什么我的多线程插入程序比单个线程插入程序执行得更好?
- 18. 为什么当我运行多线程的方法比较慢?
- 19. 运行Java多线程进程,顶部显示单线程
- 20. 移植的windows线程在Android操作系统上运行
- 21. 单线程线程安全级别
- 22. 从多线程程序调用系统()
- 23. java编程和java单线程多线程问题(单线程与多线程)
- 24. 系统线程vs非系统线程
- 25. 为什么我的多线程程序按顺序执行?
- 26. 操作系统线程在Go程序中
- 27. 在我的操作系统中运行两个应用程序
- 28. 多线程程序运行速度慢于单线程
- 29. Linux操作系统:系统()+ SIGCHLD处理多线程+
- 30. java线程在运行多线程时不会中断
*我的期望错了吗?*是非常错误的。 – bestsss 2011-06-17 13:43:21