Atividade VI - Introdução a programação Java para Android
public class Aviao extends Thread {
private String nomeDoVoo; private Aeroporto aeroporto;
public Aviao(String nomeDoVoo, Aeroporto aeroporto) { this.nomeDoVoo = nomeDoVoo; this.aeroporto = aeroporto; }
public synchronized void decolar() throws InterruptedException { aeroporto.aguardarPistaDisponivel(); System.out.println(nomeDoVoo + " decolando");
}
public synchronized void aterrissar() throws InterruptedException { aeroporto.aguardarPistaDisponivel(); System.out.println(nomeDoVoo + " aterrisando"); }
public synchronized void voar() throws InterruptedException { System.out.println(nomeDoVoo + " voando"); wait(2000); }
@Override public void run() { try { while (true) { decolar(); voar(); aterrissar(); } } catch (Exception e) { e.printStackTrace(); } }
}
package ExercicioVI;
public class Aeroporto extends Thread{ private String nomeDoAeroporto; private boolean estadoDaPista = false;
public Aeroporto(String nomeDoAeroporto) { this.nomeDoAeroporto = nomeDoAeroporto; }
public synchronized void aguardarPistaDisponivel() throws InterruptedException{ if(estadoDaPista == false){ wait(); } } public synchronized void alterarEstadoPista() throws InterruptedException{ if(estadoDaPista){ estadoDaPista = false; System.out.println("Pista indisponivel"); } else{ estadoDaPista = true; System.out.println("Pista disponivel"); } notifyAll(); wait(3000); } @Override public void run(){ try { while(true){