Foros del Web » Programación para mayores de 30 ;) » Java »

Duda sobre Synchronized

Estas en el tema de Duda sobre Synchronized en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/11/2011, 15:27
 
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.
  #2 (permalink)  
Antiguo 14/11/2011, 01:51
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Duda sobre Synchronized

Hola:

Basta con que cada vez que quieras hacer un acceso a la bd, pongas un synchronized(bd) mientras se hace el acceso. Lo normal es que ese "bd" fuese la Connection, pero puede ser cualquier otra variable, siempre la misma.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:55.