[英]What is the JVM thread scheduling algorithm?
我真的很好奇 JVM 是如何与线程一起工作的!
在互联网上的搜索中,我找到了一些关于 RTSJ 的材料,但我不知道这是否是我的答案的正确方向。
有人可以给我关于 JVM 调度算法的指导、材料、文章或建议吗?
我也在寻找有关调度程序中 Java 线程默认配置的信息,例如在时间切片的情况下每个线程需要多长时间。
我感谢任何帮助,谢谢!
没有单一的 Java 虚拟机; JVM 是一种规范,它有多种实现,包括 OpenJDK 版本和 Sun 版本等。 我不确定,但我猜想任何合理的 JVM 都会简单地使用操作系统提供的底层线程机制,这意味着 UNIX(Mac OS X、Linux 等)上的 POSIX 线程(pthreads)并且会暗示 Windows 上的 WIN32 线程。 通常,这些系统默认使用循环策略。
它没有。 JVM 使用操作系统本机线程,因此由操作系统而不是 JVM 进行调度。
前阵子写了一些从Java的角度来看线程调度的文章。 但是,在主流平台上,线程行为本质上取决于底层操作系统线程。
特别看一下我关于什么是Java 线程优先级的页面,它解释了 Java 的优先级级别如何映射到底层操作系统线程优先级,以及在实践中这如何使不同优先级的线程在 Linux 与 Windows 上的行为。 讨论的一个主要区别是,在 Linux 下,线程优先级和分配给线程的 CPU 比例之间有更多的关系,而在 Windows 下,情况并非如此(见图表)。
我没有评论权,所以写作在这里...... JVM 为每个相应的请求调用 pthreads(通常使用的线程机制,还有其他变体)。 但是这里的调度完全由充当主机的操作系统完成。 但这是一种首选方法,可以通过 JVM 来调度这些线程。 例如,在 Jikes RVM 中有选项可以覆盖这种操作系统决策方法。 例如,其中的线程被称为 RVMThread,它们可以使用 org.jikesrvm.schedular 包类进行调度/操作。 更多参考
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.