Несколько потоков Java и контроль над распределением потоков между несколькими ядрами - PullRequest
0 голосов
/ 19 октября 2018

Когда у нас есть несколько основных машин и с параллелизмом Java, возможно несколько потоков в нескольких ядрах.Кроме того, у нас есть поток в Java, который может помочь распределить работу.

Однако как мы можем обеспечить правильное распределение потоков по ядрам, чтобы мы могли эффективно использовать ядра?

Чем отличается распределение потоков в операционных системах Windows и Linux?И чем он отличается между процессорами Intel и AMD?Нужно ли обрабатывать потоки особым образом для разных ОС и процессоров?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Обычно требуется, чтобы количество вычислительных потоков соответствовало количеству аппаратных потоков.

Это поведение по умолчанию ForkJoinPool, настраиваемое с помощью другого конструктора или, дляобщий пул, системное свойство java.util.concurrent.ForkJoinPool.common.parallelism.Возможно, вы захотите уменьшить его, если в системе происходит другая интенсивная вычислительная работа.Похоже, что Stream API не определяет поведение (я могу ошибаться), но разумные реализации будут использовать текущий ForkJoinPool (т. Е. Пул текущей задачи или общий пул, если он выполняется вне какого-либо пула)..

Как всегда, параллелизм может снизить скорость вашей программы, а также увеличить ее скорость.

Планирование потоков выполняется на платформе, обычно делегируемой операционной системе.Некоторые реализации JRE в прошлом перемещали потоки Java между потоками ОС, но это касается обработки блокировки ввода / вывода.

0 голосов
/ 19 октября 2018

Java Thread использует собственные возможности потоков базовой ОС.Таким образом, у вас нет никакого контроля, в Java, над тем, как ОС запускает поток, кроме тех значений, которые класс Thread позволяет вам передавать в ОС.То, как Java и ОС обрабатывают эти значения, зависит от ОС и реализации Java.

У меня нет впечатления, что вы являетесь опытным системным программистом, поэтому я предлагаю вам позволить Java управлять эффективностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...