我们可以更改JVM线程调度程序吗?

时间:2014-05-01 07:39:46

标签: java synchronization jvm

我们可以更改 JVM 线程调度程序 吗?假设我的JVM正在处理线程的 抢先调度 ,而不是将其更改为我的自定义线程调度算法,或者JVM是否为调度程序提供了选择。

3 个答案:

答案 0 :(得分:7)

通常,JVM不进行任何调度。这是操作系统的任务。例如,Linux具有可配置的调度选项,如果要添加新的调度策略,则可以更改内核。

但是,根据您为什么要这样做,您可以采用另一种方式解决问题,例如使用自定义Executor或Reactor样式框架,或者有效地禁用CPU的调度并自己完成Java中的所有工作。 (不是一个微不足道的话题,很少有用)

答案 1 :(得分:5)

恕我直言,我们对线程调度没有多少控制权。在线程调度方面,大多数当前的JVM都委托给本机操作系统。我听说有些solaris jvms仍然使用"绿色线程"的概念。这可能是你想要达到的目标的最佳镜头。我没有太阳能机器,所以我无法确认。

归结为两种选择。 1)以编程方式操纵线程的优先级。优先级较高的线程将首先执行。

,或者 修改os设置,如此链接http://docs.oracle.com/cd/E24290_01/coh.371/e22838/tune_perftune.htm#CACCHIFA

中所述

答案 2 :(得分:1)

  

我们可以更改JVM的Thread调度程序。

不,因为没有人可以改变。它在操作系统中。您在JVM线程调度中可能遇到的任何引用都是过时的过时和最坏的错误。