Está en la página 1de 5

Jos Marco Garca Laynes Sistemas Distribuidos

17-10-2012

Programa que simula un campo de tiro con 10 balas. El programa consiste en primero apuntar el objetivo y posteriormente disparar.

Cdigo fuente:
Clase CampoDeTiro
public class CampoDeTiro { public static void main(String[] args) { Pistola arma = new Pistola(); Apuntar c = new Apuntar(arma, 1); Disparar d = new Disparar(arma, 1); c.start(); d.start(); } }

Jos Marco Garca Laynes Sistemas Distribuidos

17-10-2012

Clase Pistola
public class Pistola { private int cartucho; private boolean enposicion = false;

public synchronized void disparar(int cartucho) { while (enposicion == false) { try { // Esperar a apuntar wait(); } catch (InterruptedException e) { } } enposicion = false; notifyAll(); }

public synchronized void apuntar() { while (enposicion == true) { try { // Esperar a disparar wait(); } catch (InterruptedException e) { } } enposicion = true; notifyAll(); }

Jos Marco Garca Laynes Sistemas Distribuidos

17-10-2012

Clase Apuntar
public class Apuntar extends Thread { private Pistola arma; private int cartucho;

public Apuntar(Pistola arma, int cartucho) { this.arma = arma; this.cartucho = cartucho; }

@Override public void run() { for (int i = 1; i <= 10; i++) { arma.apuntar(); System.out.println("Apuntar #" + i + " bala: " + i); } } }

Jos Marco Garca Laynes Sistemas Distribuidos

17-10-2012

Clase Disparar
public class Disparar extends Thread { private Pistola arma; private int cartucho;

public Disparar(Pistola arma, int cartucho) { this.arma = arma; this.cartucho = cartucho; }

@Override public void run() { for (int i = 1; i <= 10; i++) { arma.disparar(i);

System.out.println("Disparo #" + i + " bala: " + i); } } }

Jos Marco Garca Laynes Sistemas Distribuidos

17-10-2012

Ejecucin:

También podría gustarte