Estoy trabajando en un tutorial para mi curso de concurrencia de Java. El objetivo es usar grupos de hilos para calcular los números primos en paralelo.Agregar recursivamente subprocesos a un grupo de subprocesos de Java
El diseño se basa en el Tamiz de Eratóstenes. Tiene una matriz de n bools, donde n es el entero más grande que está comprobando, y cada elemento en la matriz representa un número entero. True es primo, falso no es primo, y la matriz es inicialmente cierta.
Un grupo de subprocesos se utiliza con un número fijo de subprocesos (se supone que debemos experimentar con el número de subprocesos en el grupo y observar el rendimiento).
Un subproceso tiene un número entero múltiple para procesar. Luego, el hilo encuentra el primer elemento verdadero en la matriz que no es un múltiplo del número entero del hilo. El subproceso crea un nuevo subproceso en el grupo de subprocesos al que se asigna el número encontrado.
Después de formar un nuevo subproceso, el subproceso existente continúa estableciendo todos los múltiplos de su entero en el conjunto en falso.
El subproceso principal del programa inicia el primer subproceso con el entero '2', y luego espera a que finalicen todos los subprocesos generados. Luego escupe los números primos y el tiempo necesario para calcular.
El problema que tengo es que cuantos más subprocesos hay en el grupo de subprocesos, más lento se hace con 1 subproceso que es el más rápido. ¡Debería ser más rápido, no más lento!
Todo lo que se publica en Internet acerca de los grupos de subprocesos de Java crea n subprocesos de trabajo el subproceso principal y luego espera a que finalicen todos los subprocesos. El método que uso es recursivo ya que un trabajador puede engendrar más hilos de trabajo.
Me gustaría saber qué está pasando mal, y si los grupos de subprocesos de Java se pueden utilizar recursivamente.
Continúe con el enfoque Thread, esta es una experiencia de aprendizaje y comprenderá mucho sobre los hilos cuando haya terminado. ¿A quién le importa el tamiz de Eratóstenes? Muchos programadores profesionales nunca entienden el conocimiento en esta página. ¡Solo recuerda que si una mujer puede tener un bebé en 9 meses, eso no significa que nueve puedan hacerlo un mes! –