Comprobar saldo de cuenta en Java

DESCARGAR




public class Main {

public static void main(String[] args) {

VerificarCuenta oVerificarCuenta = new VerificarCuenta();

Thread Fausto = new Thread(oVerificarCuenta, "Javi");
Thread Jaime = new Thread(oVerificarCuenta, "Jaime");
Thread Hector = new Thread(oVerificarCuenta, "Hector");

Fausto.start();
Jaime.start();
Hector.start();

}

}





public class CuentaBanco {

private int balance = 50;
public CuentaBanco(){
}
public int getBalance(){
return balance;
}
public void retiroBancario(int retiro){
balance=balance-retiro;
}

}





public class VerificarCuenta implements Runnable{

private CuentaBanco cb = new CuentaBanco();
// private void retirarDinero(int cantidad) throws InterruptedException{
private synchronized void retirarDinero(int cantidad) throws InterruptedException{
if(cb.getBalance()>=cantidad){
System.out.println("\nLos fondos son: "+cb.getBalance());
System.out.println(Thread.currentThread().getName()+" quiere realizar una extraccion de: "+cantidad);
Thread.sleep(1000);
cb.retiroBancario(cantidad);
System.out.println(Thread.currentThread().getName()+": Puede retirar dinero.");
System.out.println("Los fondos despues de la extraccion son de "+ cb.getBalance());
}else{
System.out.println("No hay suficiente dinero en la cuenta para realizar la operacion sr "+Thread.currentThread().getName());
System.out.println("Su saldo actual es de "+cb.getBalance());
Thread.sleep(1000);
}
}

@Override
public void run() {
for (int i = 0; i < 3; i++) {
try{
this.retirarDinero(10);
if(cb.getBalance()<0){
System.out.println("Numeros rojos!!");
// System.out.println("Jaime a pegado a Fausto");
}
}catch(InterruptedException e){
System.out.println("Error ");
}
}
}

}