Я работаю над учебным пособием для своего курса параллелизма Java. Цель состоит в том, чтобы использовать пулы потоков для параллельного вычисления простых чисел.Рекурсивное добавление потоков в пул потоков Java
Дизайн выполнен на основе сита Эратосфена. Он имеет массив n bools, где n - наибольшее целое число, которое вы проверяете, и каждый элемент в массиве представляет одно целое число. True - это простое, false - это не простое, а массив изначально все верно.
Пул потоков используется с фиксированным числом потоков (мы должны экспериментировать с количеством потоков в пуле и наблюдать за производительностью).
Нить получает целое число, кратное процессу. Затем поток обнаруживает первый истинный элемент в массиве, который не является кратным целых чисел потока. Затем поток создает новый поток в пуле потоков, которому присваивается найденное число.
После того, как сформирован новый поток, существующий поток затем по-прежнему устанавливает для всех кратных его целых чисел в массиве значение false.
Основная нить программы запускает первый поток с целым числом «2», а затем ждет завершения всех порожденных потоков. Затем он выплескивает простые числа и время, затрачиваемое на вычисление.
Проблема у меня в том, что чем больше потоков есть в пуле потоков, тем медленнее это происходит, когда 1 поток является самым быстрым. Это должно ускориться быстрее!
Все материалы в Интернете о пулах потоков Java создают n рабочих потоков основного потока, а затем ждут завершения всех потоков. Метод, который я использую, рекурсивный, поскольку рабочий может порождать больше рабочих потоков.
Я хотел бы знать, что происходит не так, и если пулы потоков Java могут использоваться рекурсивно.
Продолжайте использовать подход Thread, это опыт обучения, и вы поймете многое о потоках, когда вы закончите. Кто заботится о Сите Эратосфена? Многие профессиональные программисты никогда не понимают знания на этой странице. Просто помните, что если женщина может иметь ребенка через 9 месяцев, это не означает, что девять могут сделать это один месяц! –