4

Если на конкретном процессоре доступно несколько ядер, будут ли они использоваться автоматически, когда JVM запускает Java-код, написанный пользователем? Или код должен быть специально написан для использования многоядерных процессоров?Имеет ли код Java автоматически использовать несколько процессорных ядер, если они доступны

Я имею в виду, нужно ли создавать код по-разному для JVM, чтобы иметь возможность использовать несколько ядер во время его запуска, скажем, с помощью программиста, создающего несколько потоков в коде пользователя? И скажем, если мы не будем использовать многопоточность в Java-коде, JVM не сможет использовать несколько ядер независимо от того, сколько ядер доступно. Возможно, это может быть так, но я не уверен.

+2

* сказать с помощью программиста, создающего несколько потоков в коде пользователя? * Да. * И скажем, если мы не будем использовать многопоточность в Java-коде, JVM не сможет использовать несколько ядер независимо от того, сколько ядер доступно. * По большей части. GC может использовать другой поток. Или EDT. Любые другие темы для домашнего хозяйства тоже будут работать. –

ответ

2

Насколько я знаю, JVM действительно может воспользоваться, если опция существует. Если вы запустите инструмент профайлера: java/jdk [версия] /bin/jvisualvm.exe, вы можете наблюдать, как даже обычная, «выделенная потоковая» программа использует несколько потоков. Я не могу вспомнить, если профайлер показывает, какие ядра используются для данных потоков.

3

В java можно использовать многоядерное использование, создавая отдельные потоки. В отличие от предыдущих реализаций JVM, современные реализации создают собственные потоки, которые ОС распознает и, следовательно, каждый доступный процессор может быть выделен для каждого потока, созданного в запущенной java-программе. Но это не означает, что вы всегда получите преимущество многопроцессорности (многоядерное использование). Это зависит от проблемы и, более того, способ решения. Неправильно разработанные решения не используют преимущества многоядерной обработки.

ПРИМЕЧАНИЕ. - Мое предложение состоит в том, чтобы интенсивные вычисления были рассчитаны с учетом архитектуры параллельного вычисления (многоядерного использования). Современные процессоры достигли максимального предела увеличения тактовой частоты процессора. Таким образом, такие компании, как Intel, разрабатывают процессоры с несколькими ядрами. Таким образом, ответственность разработчиков заключается в том, чтобы писать программное обеспечение, чтобы использовать многоядерные возможности процессора.