Почему «while (true)» без «Thread.sleep» приводит к 100% использованию ЦП в Linux, но не в Windows?

Я создал простую программу в java:

```
public static void main(String[] args) throws InterruptedException {
    while (true) 
        ;
}

```

Если я запустил это на машине Linux, он показывает 100% использование ЦП, но не приводит к медленной работе ОС. Однако, если я запускаю тот же самый код в Windows, он показывает только около 20% использования ЦП.

Я использую Oracle JRE для Windows и OpenJDK 6 для Linux.

Мне интересно, будет ли планировщик Windows предварительно загружать потоки случайно, а Linux - нет?

По умолчанию  `top`  в Linux работает в так называемом режиме IRIX, в то время как диспетчер задач Windows этого не делает. Допустим, у вас 4 ядра:

* В режиме IRIX 1 полностью используемое ядро составляет 100%, а 4 ядра - 400%.
* При выключенном режиме IRIX 1 полностью используемое ядро составляет 25%, а 4 ядра - 100%.

Это означает, что по умолчанию  `top`  в Linux будет показывать бесконечный цикл как ~ 100%, а Windows покажет его как ~ 25%, и это означает точно то же самое.

Вы можете переключать режим IRIX, пока  `top`  работает с  `Shift`  +  `i` . Это приведет к совпадению чисел.