//Implementacion de la interfaz Runnable, similar a Thread
public class AccountService implements Runnable{
	//Declaracion de un objeto cuenta con parametro
	private Cuenta micuenta = new Cuenta(80);

	public static void main( String args[] ) {
		//Declaracion de objeto y de dos hilos, uno y dos.
		AccountService r = new AccountService();
		Thread uno = new Thread(r);
		Thread dos = new Thread(r);
		
		//Nombre de los hilos por medio de setName
		uno.setName("Ana");
		dos.setName("Juan");
		
		//Lanzamiento de los dos hilos
		uno.start();
		dos.start();
	}
	
	//Metodo lanzado en el start del hilo
	public void run(){
		hacerReintegro(50);
		if(micuenta.getSaldo() < 0){
			System.out.println("Cuenta en números Rojos "+micuenta.getSaldo());
		}
	}
	
	//Metodo sincronizado con paso de parametro
	private synchronized void hacerReintegro(int re){
		if(micuenta.getSaldo() > re){
			System.out.println(Thread.currentThread().getName() + " va a realizar un reembolso de "+re);
			micuenta.getReintegro(re);
			System.out.println(Thread.currentThread().getName() + " ha realizado un reembolso de "+re);
		}else{
			System.out.println("No hay suficiente dinero para el reintegrode "+Thread.currentThread().getName()+" de "+re);
		}
	}
}

