Comencé escribiendo herramientas de procesamiento por lotes, decidiendo que no me gusta esperar, y buscando maneras de procesar los archivos en paralelo. Disculpe el pseudo-código; mi java está realmente oxidado
considerar el caso en el que hacer algo que toma un tiempo varias veces:
foreach(var item in list)
{
doSomethingSlow(item);
}
En este caso, podría ser beneficioso añadir algo de código de despacho para construir un hilo de la llamada al método. Creo que la forma normal de hacerlo sería crear un hilo anónimo de la siguiente manera. Si necesita poder apuntar a la cadena para obtener más control, cancelación, etc., deberá implementar e instanciar una clase que herede de Thread.
new Thread({
public void run(){
doSomethingSlow(item);
}
}).start();
Nota: No he comprobado que esta es la sintaxis correcta, utilice a su propio riesgo.
Ese enfoque debería ahorrarle algo de tiempo y abrir la puerta a pensar crudamente en paralelo. También puede mirar loop unwinding y jugar con las muchas bibliotecas de clases paralelas diferentes ahora disponibles.
Por lo general, no me gustan los ejemplos de juguetes para código, y prefiero aprender creando algo útil, así que después de jugar con las ideas en algunos tutoriales por un tiempo, recomiendo empezar a poner un poco de código concurrente en todos tus proyectos cada vez que tiene sentido hacerlo. No recomendaría que intentes hacer que cada línea de código sea paralela, ya que es muy difícil de depurar e introduce demasiados mensajes de cabecera que ejemplifican los hilos en todas partes.
Y http://www.javaconcurrencyinpractice.com/ (El sitio, y preferiblemente el libro). –
sí, ese es un gran libro, definitivamente vale la pena obtenerlo si quiere seguir con esto más allá de ejemplos muy simples. –