codice:
class Banca { 
    private int[] conti;
    public void synchronized trasferisci(int da, int a, int cifra) {
            while (cifra > conti[da])
                      try {
                            wait();
                       } 
                       catch (InterruptedException e){}
                       conti[da] -= cifra;
                       conti[a] += cifra;
                       notifyAll();
}
..............
}
Si assuma di avere una Banca b i cui conti hanno ciascuno un saldo iniziale di 100, e tre thread, th1, th2 e th3, che eseguono rispettivamente b.trasferisci(7,8,200), b.trasferisci(4,7,120) e b.trasferisci(9,4,30).
Dare la traccia dell'esecuzione assumendo che il thread th1 abbia priorità su th2, e il thread th2 su th3.


Parte th1 e va in wait (200>100), poi parte th2 e va in wait (120>100) ora mi domando può partire ed eseguire il proprio metodo th3???? Se sì esegue termina e poi parte th2 giusto???