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).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(); } .............. }
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???

Rispondi quotando