Loading repository data…
Loading repository data…
pedroaviless / repository
LectoresEscritoresEjemplo Este proyecto es una implementación en Java del famoso problema de sincronización de lectores y escritores
LectoresEscritoresEjemplo Este proyecto es una implementación en Java del famoso problema de sincronización de lectores y escritores. El objetivo es coordinar múltiples hilos lectores y escritores que acceden a una base de datos compartida, garantizando la exclusión mutua adecuada y permitiendo la concurrencia segura.
Clases principales Semaforo: Controla el acceso concurrente a la base de datos mediante métodos sincronizados utilizando synchronized, wait(), y notifyAll(). Gestiona el número de lectores activos y si hay un escritor en la base.
HiloLector: Representa un hilo lector que intenta acceder a la base de datos. Usa los métodos de la clase Semaforo para entrar y salir del recurso de lectura de forma segura.
HiloEscritor: Representa un hilo escritor que accede de forma exclusiva a la base de datos. Controla la entrada y salida mediante los métodos del semáforo para garantizar exclusividad.
Main: Clase principal donde se crean y arrancan múltiples hilos lectores y escritores para simular el acceso concurrente a la base de datos.
Ejecución Para ejecutar el proyecto:
Compilar las clases Java: javac Semaforo.java HiloLector.java HiloEscritor.java Main.java
Ejecutar la clase principal: java Main
Comportamiento Varios lectores pueden leer simultáneamente. Los escritores tienen acceso exclusivo, esperando a que no haya lectores ni otros escritores. Se controla la concurrencia con mecanismos de sincronización estándar de Java. El programa imprime el estado de acceso en consola para facilitar el seguimiento del flujo. Este proyecto es ideal para entender conceptos de sincronización de hilos, exclusión mutua y coordinación en programación concurrente.