Para controlar la actualización de la variable “saldo” podemos marcar todos los métodos peligrosos. En el código que sigue se han marcado 3 métodos, de forma que la exclusión abarca a todos conjuntamente:
class Cuenta modificada |
public class Cuenta { private volatile int saldo = 0; public synchronized int getSaldo() { return saldo; } public synchronized int ingresar(int
dinero) { try { int x = saldo + dinero; int s = (int) (Math.random() *
2000); Thread.sleep(s); saldo = x; } catch (InterruptedException e) { System.err.println(e); } return saldo; } public synchronized int sacar(int dinero)
{ try { int x = saldo - dinero; int s = (int) (Math.random() *
2000); Thread.sleep(s); saldo = x; } catch (InterruptedException e) { System.err.println(e); }
return saldo; } } |
Ver “monitores”.
Temas relacionados