Я просто читал о том, как «сервер» обрабатывает несколько запросов и заканчивает работу с многопоточным Java и несколькими ядрами.Несколько ядер и java
В то время, когда компьютеры были одноядерными, а если есть два потока в java одновременно, тогда планировщик jvm позаботится о предоставлении времени каждому потоку. Таким образом, два потока никогда не работают параллельно, но используют идеальное время (например, если поток заблокирован на каком-то ресурсе).
Но это случай с несколькими ядрами и каркасом fork/join в java7? Я имею ввиду, что слышал, что с несколькими ядрами мы можем добиться параллелизма. Итак, если у меня есть два потока, два ядра и каждый поток имеют отдельное ядро (это не гарантировано), то будут ли они фактически параллельными, поскольку планировщик jvm все равно приведет к временному чередованию?
Прошу прощения, если этот вопрос глуп, но я действительно не уверен в этом. Пожалуйста, помогите мне понять!
Спасибо! Ouney
Планирование потоков фактически делегированы операционной системы. И да, ОС будет отправлять потоки всем своим ядрам, включая потоки Java. –
В чем вопрос? Вы спрашиваете, может ли многопоточная программа Java использовать больше одного ядра на многоядерной платформе? Если это так, чисто теоретический ответ «зависит от виртуальной машины Java, но для любой _practical_ JVM ответ« да ». –
@ jameslarge- Я прошу, чтобы мы достигли реального параллелизма в случае, если потоки назначены нескольким (один поток на ядро)? Я запутался, если это правда, потому что планировщик jvm все равно дает время по очереди (что указывает на то, что два потока никогда не могут работать параллельно) – Ouney