Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/11/2011, 15:27
rhkv23
 
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 12 años, 8 meses
Puntos: 0
Duda sobre Synchronized

Tengo un array privado de procesos "lectores" (5 hilos) y un metodo publico para poder acceder a ellos desde otra clase. De la misma forma tengo array de procesos "escritores" (5 hilos). Desde la clase principal, les hago start a todos los hilos:


METODO RUN ESCRITOR:

Código:
synchronized(Sistema.pLector(0)){
synchronized(Sistema.pLector(1)){
synchronized(Sistema.pLector(2)){
synchronized(Sistema.pLector(3)){
synchronized(Sistema.pLector(4)){
synchronized(bd){ 

bd.updateNombre();					
bd.updateApellidos();	
bd.updateDireccion();

}
}}}}}

METODO RUN LECTOR

Código:
System.out.print(bd.getNombre()+" "+bd.getApellidos()+" ("+bd.getDni()+"):\n"+bd.getDireccion()+"\n\n");
El funcionamiento de los metodos de la clase bd no es relevante. Mi pregunta es, de este modo, cuando se este ejecutando un proceso escritor, no podra ejecutarse el codigo ningun otro proceso (lector ni escritor) hasta que termine de actualizar la BD. Esto es correcto??

El funcionamiento que pretendo conseguir es que varios procesos lectores puedan acceder "simultaneamente" a leer la base de datos, pero cuando un proceso escritor la este modificando, que ningun lector no ningun escritor puedan acceder a ella.

Muchas gracias, un saludo.