Java-парень должен понимать, как работает многопоточность в отношении многоядерных процессоров

У меня нет опыта работы в информатике. Я изучал программирование на Java и написал несколько проблемных программ, которые работают. Я один из немногих разработчиков в маленькой компании, и мне нужно улучшать и писать лучшие программы.
Я наткнулся на путь многопоточности. На работе я слышу, как люди говорят о том, что их компьютерный процессор имеет 4 или 8 ядер и т. Д. Что это значит? Там есть черный ящик в моем понимании того, как многопоточные программы ведут себя на разных аппаратных спецификациях. Так что, если я запускаю Java-программу, которая запускает 10 потоков на 4-ядерном компьютере, как это работает? С какими вещами я должен быть осторожен, если я запускаю ту же программу на 8-ядерном процессоре. Или 2-х ядерный процессор?

Спасибо заранее за вашу помощь.

-4

Решение

Сложно ответить точно. Вы должны сравнить, если вы хотите оптимизировать. Немного эмпирические правила (который имеет исключения):

  • не создавайте много потоков. Более чем сотни потоков — это почти всегда ошибка (на текущем настольном или обычном сервере). Есть только десятки из них.
  • сравните ваше приложение
  • возможно, сделать количество потоков каким-то образом настраиваемым (используйте пул потоков)
  • когда это уместно, в вашем процессоре должно быть немного больше потоков, чем ядер, особенно для приложений, связанных с вводом / выводом.

многоядерный процессор имеет несколько (параллельно) процессоры или ядра. Каждое ядро ​​выполняет свой собственный поток (или процесс, или задачу). Таким образом, несколько потоков действительно выполняются параллельно (одновременно). Некоторые процессоры гипер-резьбовой (то есть два банка регистров -etc …-, разделяющих одно и то же физическое «ядро», создавая иллюзию двух «виртуальных» ядер).

Если вы запускаете 10-поточную Java-программу (также с 6-ю другими не-поточными системными «запускаемыми» процессами), ядро ​​операционной системы (например, ваше ядро Linux) придется график эти 10 + 6 = 16 задач (задача является либо потоком в многопоточном процессе, либо однопоточным процессом). Планировщик ядра даст каждой задаче квоту времени выполнения на ядре. По истечении этого интервала времени (например, несколько миллисекунд) новая запускаемая задача переносится по расписанию (включено упреждающий многозадачность операционные системы)

Читать хорошо руководство на операционная система и о процессы, задачи а также линукс или же Юникс

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector