concurrencia ejemplo

Páginas: 6 (1310 palabras) Publicado: 18 de marzo de 2013
Práctica Basada en el Problema de Lectores-Escritores
El problema clásico de lectores y escritores se plantea para el acceso concurrente a un
recurso compartido, en este caso se trata de una base de datos. En las bases de datos la
información se almacena en tablas. Cada tabla consta de una cabecera, que indica el tipo de
información almacenada y las f ilas representan los datos (es decir, losregistros).
Asegurar la integridad de los datos en una base de datos exige que los procesos de
escritura de datos (inserción y actualización) en las tablas se hagan en exclusión mutua. En
caso contrario, la escritura de datos puede propiciar datos inconsistentes.

Implementación de la base de datos
El esquema de la base de datos con la que se trabajará se muestra a continuación:TablaNombre
Clave
1001
1002
..
1100

Nombre
Monserrat
Manuel

Fabian

TablaApellidos
Clave
1001
1002
..
1100

Apellidos
Sarmiento Luna
Olmedo Cortez

Montiel Uribe

TablaRfc
Clave
1001
1002
..
1100

RFC
SALM980101
OLCM980220

MOUF990330

TablaDirecciones
Clave
1001
1002
..
1100

Dirección
Boulevard 5 de Mayo 2114
Av. 14 sur 6789

Av. Circunvalación1802

Cada registro contiene la información de una persona: clave de tipo int; rfc, nombre,
apellidos y dirección de tipo String. El campo rfc, al igual que clave, actúan como identificador
único y por tanto no pueden ser modificados, pero los demás campos pueden actualizarse. Es
conveniente aclarar que en este caso se ha optado por almacenar cada uno de los campos de
los registros en una tabladistinta.
El código correspondiente para la implementación de la base de datos y la realización de los
puntos planteados en la práctica se presenta a continuación:
import java.util.Hashtable;
class BaseDeDatos{
private Hashtable tablaRfc;
private Hashtable tablaNombre;
private Hashtable tablaDireccion;
private Hashtable tablaApellidos;
//Constructor
public BaseDeDatos(){this.tablaNombre = new Hashtable();
this.tablaApellidos = new Hashtable();
this.tablaRfc = new Hashtable();
this.tablaDireccion = new Hashtable();
}

//Constructor
public BaseDeDatos(Hashtable nombres, Hashtable apellidos, Hashtable rfcs, Hashtable
direcciones){
this.tablaNombre = nombres;
this.tablaApellidos = apellidos;
this.tablaRfc = rfcs;
this.tablaDireccion = direcciones;
}
public HashtablegetTablaNombre(){
return this.tablaNombre;
}
public Hashtable getTablaApellidos(){
return this.tablaApellidos;
}
public Hashtable getTablaRfc(){
return this.tablaRfc;
}
public Hashtable getTablaDirecciones(){
return this.tablaDireccion;
}
public String getNombre(int clave){
return (String) this.tablaNombre.get(clave);
}
public String getApellidos(int clave){
return (String)this.tablaApellidos.get(clave);
}
public String getRfc(int clave){
return (String) this.tablaRfc.get(clave);
}
public String getDireccion(int clave){
return (String) this.tablaDireccion.get(clave);
}
public void updateNombre(int clave, String nombre){
this.tablaNombre.remove(clave);
this.tablaNombre.put(clave, nombre);
}
public void updateApellidos(int clave, String apellidos){this.tablaApellidos.remove(clave);
this.tablaApellidos.put(clave, apellidos);
}
public void updateDireccion(int clave, String direccion){
this.tablaDireccion.remove(clave);
this.tablaDireccion.put(clave, direccion);
}
public void insertarRegistro(int clave, String nombre, String apellidos, String rfc, String
direccion){
this.tablaNombre.put(clave, nombre);
this.tablaApellidos.put(clave, apellidos);this.tablaRfc.put(clave, rfc);
this.tablaDireccion.put(clave, direccion);
}
}

Para evitar inconsistencias en los datos los diferentes procesos deben realizar las
escrituras en exclusión mutua. Recordar que la exclusión mutua en Java se suele implementar
mediante cerrojos (locks), los cuales son equivalentes a los semáforos. Por tanto, quien accede
a un dato y ha tomado previamente el...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • CONCURRENCIA EJEMPLO DE SEMAFOROS
  • EJEMPLO DE TAREA CONCURRENTE
  • concurrencia
  • Concurrencia
  • Concurrente
  • concurrencia
  • Concurrencia
  • Concurrente

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS