OS线程调度程序是否被JVM覆盖



根据以下资源,线程调度是由操作系统或JVM或两者都完成的。

1.http://tutorials.jenkov.com/java-concurrency/creating-and-senting-threads.html

2.https://www.javatpoint.com/thread-scheduler-in-java

我的问题:

1.谁计划线程?

2.线程调度程序在任何地方都被覆盖了吗?(例如,JVM线程调度程序覆盖OS线程(

3.我如何从抢先计划转变为时间切片计划?反之亦然?

  1. 谁安排了线程?

操作系统。但是,在应用程序级别上,您的JRE可以根据线程优先级安排应用程序级线程;仍然将最终由OS的调度程序(调度块(进行安排。用户级线程由用户级库管理,但它们仍然需要内核系统进行操作。

  1. 线程调度程序是否在任何地方都被覆盖吗?

Java运行时环境支持一种非常简单,确定性的调度算法,称为固定优先级调度。实际调度程序在OS中是唯一的;从总体角度来看线程的计划,而不是从Java/应用程序级别的角度来看。

  1. 如何从抢先计划转换为时间切片计划?反之亦然?

,除非修改OS内核,否则调度程序的调度程序的性质不能更改调度程序的性质。即使在JRE中,您也无法更改应用程序级别的线程调度。

属性: Thread Scheduling tutorial

  1. JVM计划Java线程(尽管实际上是操作系统(。

  2. 没有一个Java虚拟机;JVM是一个规范,它有多个实现,包括OpenJDK版本和IT的Sun版本等。任何合理的JVM都将简单地使用OS提供的基本螺纹机制,否则可能会有差异,这意味着Unix(Mac OS X,Linux等(上的Posix线程(Pthreads(,并暗示Windows上的Win32线程。通常,这些系统默认情况下使用圆形旋转策略。

3.总的来说,JVM不执行任何计划。那是操作系统的任务。 例如,Linux具有可配置的调度选项,如果要添加 一种新的调度策略,您可以更改内核。

但是,根据您为什么要这样做,您可以解决问题 诸如使用自定义执行程序或反应堆样式框架或 有效地禁用CPU计划并在Java中进行所有工作 你自己。

最新更新