Solucion bano unisex

4
Código Fuente: (http://goo.gl/dFmzn2) /************************************************************ * UNIVERSITARIA DE DESARROLLO E INVESTIGACIÓN - UDI * * ============================== * * GPL 2015 por Juan C. Garcia-Ojeda * * Creado : Marzo 4 de 2015 * * Modificado : Marzo 4 de 2015 * * Estado : Actualizado * * Archivo : WomenThread.java * * Propósito : Solución problema propuesto en * * http://www.slideshare.net/j.c.garciao/ejercicio-semaforo * ************************************************************/ package co.edu.udi.monitors; public class WomenThread extends Thread { String name = ""; String gender =""; BanoMonitor bm; public WomenThread(String name, String gender, BanoMonitor bm){ this.name=name; this.gender=gender; this.bm=bm; } public void run(){ while(true){ try { bm.arrive(name,gender); Thread.sleep(2500); } catch(InterruptedException e){ e.printStackTrace(); } finally{ try { bm.depart(name,gender); Thread.sleep(2500); } catch (InterruptedException e) { e.printStackTrace(); } } } } }

Transcript of Solucion bano unisex

Page 1: Solucion bano unisex

Código Fuente: (http://goo.gl/dFmzn2) /************************************************************ * UNIVERSITARIA DE DESARROLLO E INVESTIGACIÓN - UDI * * ============================== * * GPL 2015 por Juan C. Garcia-Ojeda * * Creado : Marzo 4 de 2015 * * Modificado : Marzo 4 de 2015 * * Estado : Actualizado * * Archivo : WomenThread.java * * Propósito : Solución problema propuesto en * * http://www.slideshare.net/j.c.garciao/ejercicio-semaforo * ************************************************************/ package co.edu.udi.monitors; public class WomenThread extends Thread { String name = ""; String gender =""; BanoMonitor bm; public WomenThread(String name, String gender, BanoMonitor bm){ this.name=name; this.gender=gender; this.bm=bm; } public void run(){ while(true){ try { bm.arrive(name,gender); Thread.sleep(2500); } catch(InterruptedException e){ e.printStackTrace(); } finally{ try { bm.depart(name,gender); Thread.sleep(2500); } catch (InterruptedException e) { e.printStackTrace(); } } } } }

Page 2: Solucion bano unisex

/************************************************************ * UNIVERSITARIA DE DESARROLLO E INVESTIGACIÓN - UDI * * ============================== * * GPL 2015 por Juan C. Garcia-Ojeda * * Creado : Marzo 4 de 2015 * * Modificado : Marzo 4 de 2015 * * Estado : Actualizado * * Archivo : MenThread.java * * Propósito : Solución problema propuesto en * * http://www.slideshare.net/j.c.garciao/ejercicio-semaforo * ************************************************************/ package co.edu.udi.monitors; public class MenThread extends Thread { String name = ""; String gender =""; BanoMonitor bm; public MenThread(String name, String gender, BanoMonitor bm){ this.name=name; this.gender=gender; this.bm=bm; } public void run(){ while(true){ try { bm.arrive(name,gender); Thread.sleep(2500); } catch(InterruptedException e){ // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { bm.depart(name,gender); Thread.sleep(2500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }

Page 3: Solucion bano unisex

/************************************************************ * UNIVERSITARIA DE DESARROLLO E INVESTIGACIÓN - UDI * * ============================== * * GPL 2015 por Juan C. Garcia-Ojeda * * Creado : Marzo 4 de 2015 * * Modificado : Marzo 4 de 2015 * * Estado : Actualizado * * Archivo : BanoMonitor.java * * Propósito : Solución problema propuesto en * * http://www.slideshare.net/j.c.garciao/ejercicio-semaforo * ************************************************************/ package co.edu.udi.monitors; public class BanoMonitor { protected int spaces; protected int capacity; protected String gender_monitor=""; public BanoMonitor(int n){ capacity = spaces = n; } synchronized void arrive(String persona,String gender) throws InterruptedException { while(spaces==0 || (spaces!=0 && gender_monitor.length()>0 && gender_monitor.compareTo(gender)!=0)) wait(); System.out.println("--> Arribo "+persona); gender_monitor=gender; --spaces; System.out.println("Espacios Ocupados "+ (capacity-spaces)); notify(); } synchronized void depart(String persona, String gender) throws InterruptedException { while (spaces==capacity) wait(); System.out.println("<-- Salio "+persona); ++spaces; System.out.println("Espacios Disponibles "+(spaces)); if(spaces==capacity){ gender_monitor=""; System.out.println("/* */"); System.out.println("/*Baño Totalmente Vacio */"); System.out.println("/* */"); } notify(); } }

Page 4: Solucion bano unisex

/************************************************************ * UNIVERSITARIA DE DESARROLLO E INVESTIGACIÓN - UDI * * ============================== * * GPL 2015 por Juan C. Garcia-Ojeda * * Creado : Marzo 4 de 2015 * * Modificado : Marzo 4 de 2015 * * Estado : Actualizado * * Archivo : Principal.java * * Propósito : Solución problema propuesto en * * http://www.slideshare.net/j.c.garciao/ejercicio-semaforo * ************************************************************/ package co.edu.udi.monitors; public class Principal { public static void main(String[] args) throws InterruptedException { BanoMonitor bm= new BanoMonitor(4); System.out.println("Inicialización..."); new MenThread("Pedro","H",bm).start(); new MenThread("Luis","H",bm).start(); new MenThread("Jose","H",bm).start(); new MenThread("Juan","H",bm).start(); new MenThread("Pablo","H",bm).start(); new WomenThread("Ana","M",bm).start(); new WomenThread("Rosa","M",bm).start(); new WomenThread("Maria","M",bm).start(); new WomenThread("Julia","M",bm).start(); new WomenThread("Juana","M",bm).start(); /*new MenThread("Pedro","H",bm).start(); new WomenThread("Ana","M",bm).start(); new MenThread("Luis","H",bm).start(); new WomenThread("Rosa","M",bm).start(); new MenThread("Jose","H",bm).start(); new WomenThread("Maria","M",bm).start(); new MenThread("Juan","H",bm).start(); new WomenThread("Julia","M",bm).start(); new WomenThread("Juana","M",bm).start(); new MenThread("Pablo","H",bm).start();*/ } }