2009-05-27 9 views

Respuesta

9

Debe probar the java tutorials desde Sun en concurrencia.

+1

Y http://www.javaconcurrencyinpractice.com/ (El sitio, y preferiblemente el libro). –

+0

sí, ese es un gran libro, definitivamente vale la pena obtenerlo si quiere seguir con esto más allá de ejemplos muy simples. –

0

El procesamiento de imágenes y la recuperación de datos web normalmente bloquean la interfaz de usuario, lo que los convierte en buenos candidatos para un diseño multiproceso.

1

Los ejemplos de ServerSocket son bastante sencillos de probar y usar subprocesos de manera muy sucinta.

3

Recomiendo el libro Concurrent Programming in Java: Design Principles and Patterns de Doug Lea. Doug Lea fue uno de mis profesores en SUNY Oswego - gran profesor, hombre brillante. El libro es excelente y le ofrece mucha información sobre cómo escribir un buen código multiproceso en Java.

Oh sí, y Doug Lea escribió la mayor parte de java.util.concurrent. Así que es una muy buena autoridad sobre el tema ;-)

0

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.

Cuestiones relacionadas