|
E perchè non:
lock.lock();
mi domando io.
Il sospetto cade sul metodo resetLock, che cambia il valore di "lock" tramite un'oscuro Unsafe. Suppongo che lo faccia riflessivamente (tramite setAccessible) o tramite alchimie native.
Crea una copia di quel lock che non dovrebbe mai cambiare perchè in verità può essere cambiato. La copia evita che il blocco avvenga sul monitor A e lo sblocco sul monitor B.
Trattasi comunque di "gran porcata" e il fatto che sia codice di Sun è un'aggravante.
ps.: il metodo resetLock è in fondo a CopyOnWriteArrayList, proprio l'ultimo, ben nascosto.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
|