Advertisement
FacuValverdi

Simulacro

Jun 11th, 2020
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.09 KB | None | 0 0
  1. package punto1;
  2. import java.util.Random;
  3. import java.util.concurrent.Semaphore;
  4.  
  5. public class Biblioteca {
  6. ///PRINCIPAL
  7.     public static void main(String[] args) {
  8.  
  9.         Semaphore biblioteca= new Semaphore(2);
  10.         Semaphore B1= new Semaphore(1);
  11.         Semaphore B2= new Semaphore(1);
  12.         Random p=new Random();
  13.         Random r=new Random();
  14.         int tiempoL;
  15.         for(int i=1;i<=10;i++) {
  16.             try {
  17.                 biblioteca.acquire();//// Representa las dos entradas de la biblioteca, en la simulacion, una sola persona puede entrar por una sola puerta(cualquiera de las dos).
  18.                 if(B1.availablePermits()==1) {
  19.                         B1.acquire();
  20.                         Thread hiloP=new Thread(new Socio(i,100+i,tipoPersona(p.nextInt(2)),B1,biblioteca,"B1"));
  21.                         hiloP.start();
  22.                 }else {
  23.                     if(B2.availablePermits()==1){
  24.                         B2.acquire();
  25.                         Thread hiloP=new Thread(new Socio(i,100+i,tipoPersona(p.nextInt(2)),B2,biblioteca,"B2"));
  26.                         hiloP.start();
  27.                 }
  28.                 }
  29.                 tiempoL=r.nextInt(5001-2000)+2000;
  30.                 Thread.sleep(tiempoL);
  31.             }
  32.              catch (InterruptedException e1) {
  33.                 // TODO Auto-generated catch block
  34.                 e1.printStackTrace();
  35.             }
  36.        
  37.         }
  38.    
  39.         }
  40.       public static String tipoPersona(int tipo){
  41.         int tipoP=tipo;
  42.         String persona="";
  43.         switch(tipoP) {
  44.         case 0: persona="Profesor";
  45.                          break;
  46.         case 1: persona="Alumno";
  47.                 break;
  48.         }
  49.         return persona;
  50.     }
  51.     }
  52. //CLASE SOCIO(esta mal nombrada xd)
  53. package punto1;
  54. import java.util.Random;
  55. import java.util.concurrent.*;
  56.  
  57. public class Socio implements Runnable {
  58.     private int numeroSocio,cantLibros,comprobante;
  59.     private String tipoS,nombreB;
  60.     private final Semaphore bibliotecario;
  61.     private final Semaphore biblioteca;
  62.     private int contadorComprobante=0;
  63.     private Libro L1= new Libro("L1","Libro1","Fisica");
  64.     private Libro L2= new Libro("L2","Libro2","Quimica");
  65.     private Libro L3= new Libro("L3","Libro3","Algebra");
  66.     private  Libro[]libros={L1,L2,L3};
  67.    
  68.     public Socio(int comprobante,int numeroSocio,String tipoS,Semaphore bibliotecario,Semaphore biblioteca,String nombreB) {
  69.         this.comprobante=comprobante;
  70.         this.numeroSocio=numeroSocio;
  71.         this.tipoS=tipoS;
  72.         this.bibliotecario=bibliotecario;
  73.         this.biblioteca=biblioteca;
  74.         this.nombreB=nombreB;
  75.     }
  76.     @Override
  77.     public void run() {
  78.         Random aleat= new Random();
  79.         cantLibros=aleat.nextInt(3)+1;
  80.         try {
  81.             System.out.println("Ingresando "+getTipoS()+" Nro. de socio "+getNumeroSocio());
  82.             Thread.sleep(tiempoSleep(getTipoS()));
  83.             System.out.println(" ");
  84.             System.out.println("Nro. de comprobante: "+comprobante);
  85.             System.out.println("Nro. de socio: "+getNumeroSocio());
  86.             System.out.println("Tipo de socio: "+getTipoS());
  87.             System.out.println("Cantidad de dias de prestamo: "+tiempoPrestamo(getTipoS())+" dias.");
  88.             System.out.println("Cantidad de libros: "+cantLibros);
  89.             System.out.println("Fue atendido por: "+nombreB);
  90.             System.out.println("-----------DETALLE-------------");
  91.             prestamoLibroDetalle(cantLibros,libros);
  92.            
  93.             System.out.println("------------------------");
  94.            
  95.         } catch (InterruptedException e) {
  96.             // TODO Auto-generated catch block
  97.             e.printStackTrace();
  98.         }finally {
  99.             System.out.println("El socio "+numeroSocio+" de tipo "+tipoS+" se va");
  100.             biblioteca.release();
  101.             bibliotecario.release();
  102.            
  103.         }
  104.     }
  105.     public int tiempoSleep(String tipoS) {
  106.         String tipoSocio=tipoS;
  107.         int tiempo = 0;
  108.         switch (tipoSocio) {
  109.         case "Profesor": Random p= new Random();
  110.                          tiempo=p.nextInt(5001-3000)+3000;
  111.                          break;
  112.         case "Alumno": Random a= new Random();
  113.                        tiempo=a.nextInt(5001-3000)+3000;
  114.                        break;
  115.                                
  116.         }
  117.         return tiempo;
  118.     }
  119.     public int tiempoPrestamo(String tipoS) {
  120.         String tipoSocio=tipoS;
  121.         int tiempo = 0;
  122.         switch (tipoSocio) {
  123.         case "Profesor": ;
  124.                          tiempo=14;
  125.                          break;
  126.         case "Alumno":
  127.                        tiempo=7;
  128.                        break;
  129.                                
  130.         }
  131.         return tiempo;
  132.     }
  133.     public void prestamoLibroDetalle(int libros,Libro[] libross) {
  134.         int cantidadL=libros;
  135.         switch (cantidadL) {
  136.         case 1: Random aleatorio1= new Random();
  137.                 int numero=aleatorio1.nextInt(3);
  138.               System.out.println(libross[numero].getCodigo()+" "+libross[numero].getNombre()+" "+libross[numero].getTema());
  139.                 break;
  140.         case 2: Random aleatorio2=new Random();
  141.                int num1=aleatorio2.nextInt(3);
  142.                int num2=aleatorio2.nextInt(3);
  143.                while (num1==num2){
  144.                   num2=aleatorio2.nextInt(3);
  145.                 }
  146.                 System.out.println(libross[num1].getCodigo()+" "+libross[num1].getNombre()+" "+libross[num1].getTema());
  147.                 System.out.println(libross[num2].getCodigo()+" "+libross[num2].getNombre()+" "+libross[num2].getTema());
  148.                 break;
  149.         case 3:
  150.             System.out.println(libross[0].getCodigo()+" "+libross[0].getNombre()+" "+libross[0].getTema());
  151.             System.out.println(libross[1].getCodigo()+" "+libross[1].getNombre()+" "+libross[1].getTema());
  152.             System.out.println(libross[2].getCodigo()+" "+libross[2].getNombre()+" "+libross[2].getTema());
  153.         break;
  154.         }
  155.        
  156.        
  157.     }
  158.     public int getNumeroSocio() {
  159.         return numeroSocio;
  160.     }
  161.     public void setNumeroSocio(int numeroSocio) {
  162.         this.numeroSocio = numeroSocio;
  163.     }
  164.     public String getTipoS() {
  165.         return tipoS;
  166.     }
  167.     public void setTipoS(String tipoS) {
  168.         this.tipoS = tipoS;
  169.     }
  170.  
  171. }
  172. //Clase LIBRO
  173.  
  174. package punto1;
  175.  
  176. public class Libro {
  177.     private String codigo;
  178.     private String nombre;
  179.     private String tema;
  180.     public Libro(String codigo,String nombre, String tema){
  181.         this.codigo=codigo;
  182.         this.nombre=nombre;
  183.         this.tema=tema;
  184.        
  185.     }
  186.     public String getCodigo() {
  187.         return codigo;
  188.     }
  189.     public void setCodigo(String codigo) {
  190.         this.codigo = codigo;
  191.     }
  192.     public String getNombre() {
  193.         return nombre;
  194.     }
  195.     public void setNombre(String nombre) {
  196.         this.nombre = nombre;
  197.     }
  198.     public String getTema() {
  199.         return tema;
  200.     }
  201.     public void setTema(String tema) {
  202.         this.tema = tema;
  203.     }
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement