традиционные одноядерные процессоры могут обрабатывать только одну инструкцию за раз, что означает, что они могут работать только в одном потоке в любой момент времени.
Многопоточная поддержка достигается синтетически, давая повороты потоков'на процессоре, так что они кажутся работающими одновременно.
многоядерные процессоры могут обрабатывать команду на процессор в любой момент времени.
этот вопрос больше относится к процессоруаппаратный дизайн, а не программирование, и особенно ни один язык, то есть Java, поскольку ограничение распространяется на все.