Está en la página 1de 1

PROYECTO DE ASIGNATURA:

APLICACIONES DISTRIBUIDAS
Docente: Ph.D. Franklin Parrales Bravo

Proyecto de código: Reservas de tickets aéreos(Java)


Objetivo: Aplicar herramientas de Exclusión Mutua y de Sincronización para resolver
condiciones de competencia en programas que corren de forma concurrente.
Requerimientos:
Implementar una aplicación que simule un programa de reservas de tickets aéreos con
varias ventanillas que funcionan de forma concurrente. En la simulación se contará con 30
asientos (que avión tan pequeño!).
La venta de tickets aéreos que se simulará presenta ciertas particularidades:
• Los requerimientos a iniciar son:
o a. Reservar asiento
o b. Eliminar reservación de asiento
o c. Cambiar asiento
• Las “ventanillas” son en realidad un panel o un contenedor cualquiera dentro de su
interfaz que contienen una caja de texto para el número de pasajero y el número de
asiento. Además de las cajas de texto, debe tener también botones para las operaciones
mencionadas en el paso b. Para la operación de cambio de asiento, sólo debería
solicitarse el #de asiento al cual se quiere cambiar, pues ud. tiene almacenado en qué
asiento se encuentra actualmente el pasajero provisto
• La interfaz provista debe permitir registrar el pasajero (información adicional al proceso)
y el número de asiento requerido (información esencial en el proceso)
• Se debe diseñar la interfaz para que permita ingresar información en 3 “ventanillas” al
mismo tiempo. Cada requerimiento iniciado en una “ventanilla” es atendida por un hilo
diferente.
• Cuando se ingresa un requerimiento en una de las “ventanillas”, se genera un tiempo
aleatorio en el que el proceso usa el CPU en alguna tarea, para lograr que los 3
requerimientos sean simultáneos (o lo más cercano a eso posible).
• Si un requerimiento de reservar o cambiar asiento no es exitoso porque el asiento está
ocupado, el hilo se bloquea, a ver si alguien elimina ese asiento y se lo puede tomar.
• Al eliminar asientos, si hay alguien esperando por ese asiento, se le asignará
automáticamente el mismo.
• Implemente dos versiones: Una de ellas sin exclusión mutua y la otra usando exclusión
mutua.
o Para la versión sin exclusión mutua, ejecute su programa en múltiples
ocasiones intentando encontrar una condición de competencia. Haga
screenshots de la misma y explique el escenario en un documento de Word
que se entregará junto con el código implementado.
o La versión que utiliza exclusión mutua debe eliminar el problema
o La interfaz debe permitir observar los asientos asignados y los cambios
en los asientos de la forma más intuitiva posible.

Página 1/1

También podría gustarte