Procesamiento de subprocesos múltiples en Java

Solo estoy teniendo algunos problemas para entender este problema. Cualquier ayuda sería muy apreciada.

El programa debe leer un archivo de texto, donde calculará la suma de los divisores de cada número de entrada. Por ejemplo, el número 20 tiene la suma 1 + 2 + 4 + 5 + 10 = 22. Luego, estas sumas se resumen línea por línea. Para cada una de estas sumas por encima del divisor se encuentra, y finalmente se suman.

Ej. Archivo inicial 1 2 4 6 15 20

25 50 100 125 250 500

16 8 3

Luego calcula la suma de divisores.

1 1 3 6 9 22

6 43 117 31 218 592

15 7 1

Resumido línea por línea

42

1007

23

Luego se calculan las sumas anteriores.

54

73

1

Entonces finalmente totalizó y regresó.

128

Necesito completar el proceso con cada nueva línea completada por un grupo de subprocesos.

Mi lógica es la siguiente.

              5.2. For each input line (Add each line to an ArrayBlockingQueue, 
Then add each item in the Queue to an ExecutorService Which will run the follow)   

               5.2.1. Parse the current input line into integers 

               5.2.2. For each integer in the current input line 

                   5.2.2.1. Compute the sum-of-divisors of this integer 

                   5.2.2.2. Add this to the cumulated sum-of-divisors 

               5.2.3. Compute the sum-of-divisors of this cumulated sum

               5.2.4. Add this to the grand total

Me atoro después de 5.2, ¿creo una nueva clase que implementa la interfaz ejecutable y luego agrega la suma acumulada a una matriz atómica, o es mejor crear una clase que implemente la interfaz invocable y luego hacer que devuelva la suma acumulada? ¿O hay una forma completamente diferente?

Esto es lo que tengo hasta ahora, que devuelve el resultado deseado, pero de forma secuencial.

http://pastebin.com/AyB58fpr

Respuesta 1

Utilizar

java.util.concurrent.Future

y un

java.util.concurrent.Executors.newFixedThreadPool(int nThreads)

Esto será realmente fácil de hacer.

Siga el tutorial de Oracle si no está familiarizado con los ejecutores.

Respuesta: 2

Quiero guardar la palabra árabe en la base de datos Oracle. El usuario escribe una palabra árabe desde el lado del cliente y envía esa palabra. En el lado del cliente, imprimí esa palabra usando la alerta, se muestra texto árabe. Pero el ...

Intento hacer coincidir diferentes formatos de fecha que analizo de diferentes archivos. Un formato de fecha es, por ejemplo: "Jue, 12 de noviembre de 2009 14:17:44 -0000" Cuando trato de hacer coincidir esta cadena con la primera expresión regular obtengo un ...

tengo el siguiente código. Funciona y publica la parte del mensaje, pero la parte del archivo adjunto no funciona. Sospecho que tiene que ver con pasar un JSON como una cadena. Facebook devuelve "{" id ":" ...

La aplicación web está desarrollada con Java / Jsp. Una cosa que quiero hacer es descargar un directorio de FTP a una PC cliente cliente. Como hay al menos 700 MB de archivos para transferir en el directorio, ...