Все просто - в вашем сценарии запускается 30 потоков, но только 4 из них выполняются одновременно (в данный момент). Нитки выполнены поочередно. Куски из любого потока могут быть выполнены, но только 4 в данный момент.
Если бы у вас было 2 строительные команды (Ядра), которые построили бы 10 домов (Нитей) одновременно, но каждый дом строился бы только по 4 часа в день одной командой (планирование потоков), вы все равно сказали бы, что 10 дома строятся одновременно, но не обязательно в одно и то же время (так как только 2 из них будут построены в один и тот же момент).
То же самое происходит с потоками в ОС и JVM.