Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.15 KB | None | 0 0
  1. package Principal;
  2.  
  3. import java.util.concurrent.locks.Condition;
  4. import java.util.concurrent.locks.ReentrantLock;
  5.  
  6. /*
  7.  * To change this license header, choose License Headers in Project Properties.
  8.  * To change this template file, choose Tools | Templates
  9.  * and open the template in the editor.
  10.  */
  11. /**
  12.  * Clientes de Viajes, prioritarios para Empleado A
  13.  *
  14.  * @author victo
  15.  */
  16. public class Agencia {
  17.  
  18.     int empleadoA;      //Asginacion de cliente a empleadoA (prioridad viajes)
  19.     int empleadoB;      //Asignacion de cliente a empleadoB
  20.     int esperaViaje;    //Numero de personas esperando en la cola para viajes
  21.     ReentrantLock mutex;
  22.     Condition cola;
  23.     Condition colaViaje;
  24.     // int esperaEntradas; //Numero de personas esperando en la cola para entradas
  25.     Condition colaEntradas;
  26.  
  27.     public Agencia() {
  28.         mutex = new ReentrantLock();
  29.         this.colaEntradas = mutex.newCondition();
  30.         this.colaViaje = mutex.newCondition();
  31.         this.cola = mutex.newCondition();
  32.         empleadoA = empleadoB = -1;
  33.         esperaViaje = 0;
  34.     }
  35.  
  36.     public void EntraViaje(int id) throws InterruptedException {
  37.         mutex.lock();
  38.         try {
  39.  
  40.             while (empleadoA != -1 && empleadoB != -1) //Si estan los dos empleados ocupados, espera
  41.             {
  42.                 esperaViaje++;
  43.                 System.out.println("CLIENTE VIAJE: " + id + " ESPERA...");
  44.                 cola.await();
  45.                 esperaViaje--;
  46.             }
  47.  
  48.             if (empleadoA == -1) //Si el A está libre, se le asigna
  49.             {
  50.                 System.out.println("CLIENTE VIAJE: " + id + " ATENDIDO POR EMPLEADO-A");
  51.                 empleadoA = id;
  52.                 // AVISA CANVAS PINTAR
  53.             } else {
  54.                 System.out.println("CLIENTE VIAJE: " + id + " ATENDIDO POR EMPLEADO-B");
  55.                 empleadoB = id;
  56.                 //AVISA CANVAS
  57.             }
  58.             System.out.println("EMPLEADO-A = " + empleadoA + " EMPLEADO-B = " + empleadoB);
  59.         } finally {
  60.             mutex.unlock();
  61.         }
  62.     }
  63.  
  64.     public void SaleViaje(int id) {
  65.         mutex.lock();
  66.         try {
  67.             if (empleadoA == id) {
  68.                 empleadoA = -1; //Liberamos el empleado
  69.             } else {
  70.                 empleadoB = -1;
  71.             }
  72.             System.out.println("CLIENTE VIAJE: " + id + " SALE");
  73.  
  74.             System.out.println("EMPLEADO-A = " + empleadoA + " EMPLEADO-B = " + empleadoB);
  75.             //Avisa canvas
  76.                            
  77.             cola.signal();
  78.  
  79.         } finally {
  80.             mutex.unlock();
  81.         }
  82.     }
  83.  
  84.     public void EntraEntradas(int id) throws InterruptedException {
  85.         mutex.lock();
  86.         try {
  87.             while ((empleadoB != -1 && empleadoA != -1) || (empleadoA == -1 && esperaViaje > 0)) //Si estan los dos empleados ocupados o el A libre, pero con gente Viaje esperando
  88.             {
  89.                 System.out.println("CLIENTE ENTRADAS: " + id + " ESPERA...");
  90.                 cola.await();
  91.             }
  92.             if (empleadoA == -1) //Si el A está libre, se le asigna
  93.             {
  94.                 System.out.println("CLIENTE ENTRADAS: " + id + " ATENDIDO POR EMPLEADO-A");
  95.                 empleadoA = id;
  96.                 // AVISA CANVAS PINTAR
  97.             } else {
  98.                 System.out.println("CLIENTE ENTRADAS: " + id + " ATENDIDO POR EMPLEADO-B");
  99.                 empleadoB = id;
  100.                 //AVISA CANVAS
  101.             }
  102.             System.out.println("EMPLEADO-A = " + empleadoA + " EMPLEADO-B = " + empleadoB);
  103.         } finally {
  104.             mutex.unlock();
  105.         }
  106.     }
  107.  
  108.     public void SaleEntradas(int id) {
  109.         mutex.lock();
  110.         try {
  111.             if (empleadoA == id) {
  112.                 empleadoA = -1; //Liberamos el empleado
  113.             } else {
  114.                 empleadoB = -1;
  115.             }
  116.             System.out.println("CLIENTE ENTRADAS: " + id + " SALE");
  117.             cola.signal();
  118.             System.out.println("EMPLEADO-A = " + empleadoA + " EMPLEADO-B = " + empleadoB);
  119.             //Avisa canvas
  120.         } finally {
  121.             mutex.unlock();
  122.         }
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement