Este es el problema que tengo: tengo una gran secuencia de algunos objetos (List<SomeClass>
), y quiero realizar alguna operación en todos los elementos de la lista y obtener una nueva secuencia (List<SomeOtherClass>
).¿Cómo puedo paralelizar el mapeo de una lista?
igual:
List<SomeOtherClass> list = new ArrayList<SomeOtherClass>();
for(SomeClass sc : originalList)
list.add(someOperation(sc));
Desde operación someOperation
no tiene ningún efecto secundario, y la lista es bastante grande, quiero que esta operación de mapeo se realicen en paralelo.
¿Cuál será la mejor manera de hacerlo en Java?
Primero lea la pregunta y la respuesta en sí. El énfasis de la pregunta es que no hay necesidad de preocuparse por la concurrencia. Y, por cierto, la muestra se llama SimpleThread. Simplemente muestra la ejecución simultánea de algún código en ejecución. Acerca de Java efectivo, admito ese libro y lo prefiero a Pensar en Java. Pero es más avanzado y decidí elegir una muestra simple de un libro que sea más adecuada para principiantes. Porque la pregunta parece ser una pregunta para principiantes. –
Creo que en el caso del OP, esto solo intentará crear demasiados hilos y bloquear el programa. Recuerde: 'list' es ** grande **. – trutheality
Por supuesto. La muestra es solo para introducir el concepto de subprocesamiento, no como código final para la pregunta.Para una gran cantidad de subprocesos, se debe usar una solución de agrupamiento de subprocesos. –