Dr. Jorge Alberto Soria Alcaraz 19/06/2017 Lenguajes de desarrollo. Universidad de Guanajuato. --------------------------------------CLASE Principal-------------------------------------------------------- package prodcon; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author DrSoajorgea */ public class ProdCon { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Areacomun area =new Areacomun(10); Productor oproductor = new Productor(10, area); Consumidor oconsumidor = new Consumidor(10, area); Thread h_productor = new Thread(oproductor); Thread h_consumidor = new Thread(oconsumidor); h_productor.start(); h_consumidor.start(); while(h_productor.isAlive() || h_consumidor.isAlive()){ try { Thread.sleep(100); } catch (InterruptedException ex) { Logger.getLogger(ProdCon.class.getName()).log(Level.SEVERE, null, ex); } } } } -----------------------------------------CLASE PRODUCTOR------------------------------------------------------------ package prodcon; /** * * @author DrSoajorgea */ public class Productor implements Runnable{ private Areacomun area = null; private int veces =0; public Productor (int v, Areacomun a){ this.veces =v; this.area =a; } @Override public void run() { int i =0; while(i < this.veces){ area.aumenta(1); i++; area.imprime(); } } } -----------------------------------------CLASE CONSUMIDOR------------------------------------------------------------ package prodcon; import static java.lang.Thread.sleep; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author DrSoajorgea */ public class Consumidor implements Runnable{ private Areacomun area = null; private int veces =0; public Consumidor (int v, Areacomun a){ this.veces =v; this.area =a; } @Override public void run() { int i =0; while(i< this.veces){ if(area.disminuye()){ i++; } else{ try { sleep(50); } catch (InterruptedException ex) { System.out.println("Error"); } } area.imprime(); } } } -----------------------------------------CLASE AREACOMUN------------------------------------------------------------ package prodcon; import java.util.ArrayList; /** * * @author DrSoajorgea */ public class Areacomun { private ArrayList area = null; public Areacomun(int size){ this.area = new ArrayList(size); } synchronized public boolean aumenta (int valor){ this.area.add(valor); return true; } synchronized public boolean disminuye (){ if(this.area.size()>0) { this.area.remove(this.area.size()-1); return true; } return false; } public void imprime(){ for(int i=0; i