Je suis en train d'étudier la synchronisation et le verrou d'objet dans un bouquin quand tout à coup j'ai pensé à quelque chose qui n'était pas expliqué et vous pourrez peut-être m'aider à satisfaire ma curiosité :
On sait qu'un Thread pose un verrou sur un objet lorsqu'il invoque une de ses méthodes synchronisée et les autres Threads doivent attendre que le verrou soit levé pour pouvoir accéder à cet objet.
Maintenant imaginez que dans la méthode synchronisé invoqué soit invoqué une méthode synchronisée d'un autre objet ; bien entendu le Thread demande un verrou sur ce second objet.
Cependant, si ce second objet est déjà verrouillé par un Thread qui attend la levée du verrou du premier objet, est-ce que les deux Threads vont se bloquer indéfiniment ou est-ce que la JVM a prévu ce cas de figure et qu'un mécanisme pour sortir de cette situation vaseuse existe ?
Partager