Это зависит от реализации JVM. Большинство современных JVM (Suns HotSpot, Oracles JRockit, виртуальные машины IBM) будут использовать модель потоков операционной системы, поскольку это обеспечит наилучшую производительность.
В ранних реализациях использовались зеленые потоки - виртуальная машина моделировала потоки, используя себя. Обычно он использовался, когда платформа или операционная система, на которой он работал, не поддерживала многопоточность. Например, в Java 1.1 в Solaris использовались зеленые потоки. В то время в Solaris обычно использовались несколько ядер / процессоров, когда использовались несколько процессов - только позже потоки были добавлены в операционную систему.
Спецификация языка Java не определяет, как должны быть реализованы потоки, но в целом, если в ОС есть поддержка потоков, современные JVM будут использовать реализацию ОС. Когда в ОС нет поддержки, например, на мобильных телефонах нижнего уровня или, например, в реализации Java-карты, среда выполнения будет использовать Green Threads.