JavaThread与操作系统thread是1对1的关系
Java语言规范和JVM规范都没有限定线程具体要如何实现。1:1、N:1、M:N模型都OK。
- 1:1模型下Java线程与操作系统线程一一对应,在JVM内没有任何线程调度器,全部交给操作系统的调度器解决。
- N:1模型则是所有Java线程共用一个操作系统线程,Java线程的调度全部由JVM内的调度器实现。
- M:N是上述两者的混合模型。
现在主流的桌面/服务器JVM(HotSpot VM系,J9 VM系)都用1:1模型,也就是JVM内没有调度器。这种条件下题主的问题就变成了操作系统问题。跑个紧凑的死循环很容易就把某个CPU核给“吃住”了。