faoxis Asked:2020-10-20 12:58:56 +0800 CST2020-10-20 12:58:56 +0800 CST 2020-10-20 12:58:56 +0800 CST Java中的线程与OS中的线程的关系 772 Java 中的线程与操作系统中的线程有什么关系?例如,UNIX 系统有线程系统调用。创建新线程时是否调用它? 也许我用谷歌搜索得很糟糕,但我在互联网上没有找到任何东西。看到有关该主题的一些文章的链接会很酷。 java 2 个回答 Voted Best Answer Sergey Gornostaev 2020-10-20T16:18:33+08:002020-10-20T16:18:33+08:00 在 Linux 和 Windows 上的 HotSpot 中,Java 线程由操作系统线程执行。来自HotSpot 运行时概述: Hotspot 中的基本线程模型是 Java 线程(java.lang.Thread 的一个实例)和本机操作系统线程之间的 1:1 映射。本机线程是在 Java 线程启动时创建的,并在它终止时被回收。操作系统负责调度所有线程并分派到任何可用的 CPU。 Barmaley 2020-10-20T13:53:14+08:002020-10-20T13:53:14+08:00 使用源头,卢克——愿源头与你同在! 如果你查看OpenJDK 中的 Thread 源码,那么当你启动线程时,你可以清楚地看到对 native 方法的调用: private native void start0(); //вызов нативного метода 这自动意味着调用 C 库函数,其实现取决于平台。我倾向于认为/相信对于 Linux,它将是操作系统线程。
在 Linux 和 Windows 上的 HotSpot 中,Java 线程由操作系统线程执行。来自HotSpot 运行时概述:
使用源头,卢克——愿源头与你同在!
如果你查看OpenJDK 中的 Thread 源码,那么当你启动线程时,你可以清楚地看到对 native 方法的调用:
这自动意味着调用 C 库函数,其实现取决于平台。我倾向于认为/相信对于 Linux,它将是操作系统线程。