Java 为什么“;而(正确)和"x201D,;没有“;线程。睡眠”;导致Linux上的CPU使用率为100%,而Windows上的CPU使用率为100%?

Java 为什么“;而(正确)和"x201D,;没有“;线程。睡眠”;导致Linux上的CPU使用率为100%,而Windows上的CPU使用率为100%?,java,linux,windows,multithreading,cpu-usage,Java,Linux,Windows,Multithreading,Cpu Usage,我用java创建了一个简单的程序: public static void main(String[] args) throws InterruptedException { while (true) ; } 如果我在Linux机器上运行它,它会显示100%的CPU使用率,但不会导致操作系统看起来很慢。然而,如果我在Windows上运行完全相同的代码,它只显示大约20%的CPU使用率 我在Windows上使用Oracle JRE,在Linux上使用OpenJDK 6 我

我用java创建了一个简单的程序:

public static void main(String[] args) throws InterruptedException {
    while (true) 
        ;
}
如果我在Linux机器上运行它,它会显示100%的CPU使用率,但不会导致操作系统看起来很慢。然而,如果我在Windows上运行完全相同的代码,它只显示大约20%的CPU使用率

我在Windows上使用Oracle JRE,在Linux上使用OpenJDK 6


我想知道Windows的调度程序是否会随机抢占线程,而Linux不会?

默认情况下,Linux上的
top
以所谓的IRIX模式运行,而Windows任务管理器则不会。假设您有4个核心:

  • 在IRIX模式打开时,1个充分利用的内核为100%,4个内核为400%

  • 在IRIX模式关闭时,1个充分利用的内核为25%,4个内核为100%

这意味着默认情况下,Linux上的
top
将显示一个无限循环约100%,Windows将显示约25%,这意味着完全相同的事情


当使用Shift+i运行
top
时,您可以切换IRIX模式。这将使数字匹配

这取决于操作系统任务调度。您有多少内核?当所有内核都忙时,Windows任务管理器报告100%。您的linux工具是否做了类似的事情,或者它报告了1个内核100%的工作价值,并且当所有内核都忙时,它是
100*N cores%
?我有4个内核,在linux上我使用系统监视器tool@Quoi不是真的。如果该程序正在运行,那么线程将在Windows和Linux上不间断地运行。是的,在“4+4”i7(超线程)上,一个微不足道的CPU循环的速度约为17-18%。为什么回答者虽然有150次,但他的分数仍然是700分。。。是这样吗??:-/@uDaY,因为一天最多有200个代表,之后的任何追加投票都不计算在内,接受的投票仍然会被计算在内。@Theother那个家伙到底什么时候点击shift-I切换?托普在跑步吗?