Proyecto Socketrs

 

En este Proyecto lo que vamos a ver es la sincronizacion de hilos ,el proyecto trata de un revolver que recarga y descarga a la vez siempre durmiendo el hilo.

Lo primero creamos los hilos.

public class PracticasDeTiro {

public static void main(String[] args) {

System.out.println(“Comenzamos las Practica de tiro……. “);

Revolver arma = new Revolver();

Recargar recarga = new Recargar(arma, 1);

Descargar descarga = new Descargar(arma, 1);

recarga.start();

descarga.start();

}

}

Aqui me creo la clase Descagar

public class Descargar extends Thread {

private Revolver arma;

private int cartucho;

public Descargar(Revolver arma, int cartucho) {

this.arma = arma;

this.cartucho = cartucho;

}

public void run() {

for (int i = 0; i < 10; i++) {

arma.disparar(i);

System.out.println(“Descargar carrete “ + this.cartucho

+ ” bala: “ + i);

}

}

}

En esta clase nos creamos un bucle for en el cual vaya descargamdo y cargando.

Ahora la clase Recargar.

public class Recargar extends Thread{

private Revolver arma;

private int cartucho;

public Recargar(Revolver arma, int cartucho) {

this.arma = arma;

this.cartucho = cartucho;

}

public void run() {

for (int i = 0; i < 10; i++) {

arma.apuntar();

System.out.println(“Carrete numero: “ + this.cartucho

+ ” bala: “ + i);

}

}

}

Vamos a la clase resolver .

public class Revolver {

private int cartucho;

private boolean enposicion = true;

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();

}

}

Aqui lo importante para resaltar es el metodo synchonized que le pasamos los atributos disparar y apuntar para que pueda sincronizarlo y decida que hilo decide.

Resultado:

Comenzamos las Practica de tiro…….

Carrete numero: 1 bala: 0

Descargar carrete 1 bala: 0

Carrete numero: 1 bala: 1

Descargar carrete 1 bala: 1

Carrete numero: 1 bala: 2

Descargar carrete 1 bala: 2

Carrete numero: 1 bala: 3

Descargar carrete 1 bala: 3

Carrete numero: 1 bala: 4

Descargar carrete 1 bala: 4

Carrete numero: 1 bala: 5

Descargar carrete 1 bala: 5

Carrete numero: 1 bala: 6

Descargar carrete 1 bala: 6

Carrete numero: 1 bala: 7

Descargar carrete 1 bala: 7

Carrete numero: 1 bala: 8

Descargar carrete 1 bala: 8

Carrete numero: 1 bala: 9

Descargar carrete 1 bala: 9

Aquí podéis ver como en el arma 1 se recarga y descarga 9 veces.

 

psp_revolver_proyecto_emilioroberto

Anuncios

Publicado el 28 septiembre, 2016 en Programacion de Servicios. Añade a favoritos el enlace permanente. Comentarios desactivados en Proyecto Socketrs.

Los comentarios están cerrados.

A %d blogueros les gusta esto: