¿Cómo funciona la sincronización de hilos en una sección crítica de un programa en Java?
¿Cómo funciona la sincronización?
Estoy haciendo una aplicación con varios hilos, que estén sincronizados para no poder entrar en una sección critica simultáneamente.
Lo hago extendiendo la clase Thread.
Tengo los siguientes métodos:
public synchronized void met ()
{ i
nt i; for (i=0; i<20; i++)
System.out.println (name + " " + i);
}
public void run ()
{ met (); }
Luego en el main creo las instancias de los objetos y llamo al método start de los mismos.
Supuestamente la salida debería ser primero las 20 iteraciones de un objeto, luego las de otro... Así para cada uno, pues el método met es sincronizado.
PERO ME SALEN MEZCLADAS hilo1 4 hilo1 5 hilo2 3 hilo1 6
¿Estoy haciendo algo mal?
¿La sincronización no sirve para eso?
Estoy haciendo una aplicación con varios hilos, que estén sincronizados para no poder entrar en una sección critica simultáneamente.
Lo hago extendiendo la clase Thread.
Tengo los siguientes métodos:
public synchronized void met ()
{ i
nt i; for (i=0; i<20; i++)
System.out.println (name + " " + i);
}
public void run ()
{ met (); }
Luego en el main creo las instancias de los objetos y llamo al método start de los mismos.
Supuestamente la salida debería ser primero las 20 iteraciones de un objeto, luego las de otro... Así para cada uno, pues el método met es sincronizado.
PERO ME SALEN MEZCLADAS hilo1 4 hilo1 5 hilo2 3 hilo1 6
¿Estoy haciendo algo mal?
¿La sincronización no sirve para eso?
Respuesta de faustinog
1