US

Deadlock

Lorsqu'on commence � avoir beaucoup de m�thodes ou blocs synchronized, comme on l'a dit pr�c�demment, le programme devient de moins en moins concurrent. De plus, on peut se retrouver face � des deadlocks. Il s'agit d'un �tat dans lequel le programme est tout simplement bloqu� et plus rien ne va pouvoir se passer, le programme ne pourra jamais se terminer. Pour comprendre cela, regardons un moment la figure suivante.

Deadlock
Figure 2.5 Deadlock.

Alice d�sire inviter Bob et Charles � une super f�te, et leurs demande donc si ils veulent venir. Bob ne vient que si Charles vient, et vice-versa. On est donc dans une situation o� plus rien ne bouge, Bob attend la r�ponse de Charles qui attend celle de Bob. On est coinc�, on est dans un deadlock.

Graphe d'allocation des ressources

Prenons un exemple o� un deadlock pourrait survenir dans un programme. Le listing suivant montre un exemple avec deux threads qui d�sirent obtenir les lockA et lockB.