Se da una situación de “deadlock” cuando dos o más threads se bloquean mutuamente, esperando el uno al otro, sin progresar ninguno de ellos.
Aunque parezca obvio el error, es frecuente provocar un deadlock cuando dos o más threads intentan ganar acceso a dos o más zonas de exclusión mutua, pero entrelazan los cerrojos:
synchronized(A) {
synchronized(B) { ... } } |
synchronized(B) {
synchronized(A) { ... } } |
Ver “vivacidad”.
Temas relacionados