«Аппаратный поток» - это физический процессор или ядро. Таким образом, 4-ядерный ЦП может действительно поддерживать 4 аппаратных потока одновременно - ЦП действительно выполняет 4 действия одновременно.
Один аппаратный поток может запускать множество программных потоков. В современных операционных системах это часто делается с помощью временного среза - каждый поток получает несколько миллисекунд для выполнения, прежде чем ОС планирует другой поток для запуска на этом процессоре. Поскольку операционная система быстро переключается между потоками, она выглядит как , как будто один процессор выполняет более одной операции одновременно, но в действительности ядро все еще работает только на одном аппаратный поток, который переключается между многими программными потоками.
Современные JVM отображают потоки Java непосредственно на собственные потоки, предоставляемые ОС, поэтому нет никаких накладных расходов, вносимых потоками Java против собственных потоков. Что касается аппаратных потоков, ОС пытается отобразить потоки на ядра, если имеется достаточно ядер. Итак, если у вас есть Java-программа, которая запускает 4 потока и имеет 4 или более ядер, есть большая вероятность, что ваши 4 потока будут работать действительно параллельно на 4 отдельных ядрах, если ядра простаивают.