일단 ➊은 안전합니다. ➋는 A → B → C에서 B를 건너뛰었을 뿐 거꾸로 가지 않았으므로 안전합니다. ➌은 첫 잠금이고 B → C 순서를 어겼습니다. 따라서 교착 상태를 일으킵니다. ➍~➎는 재귀 잠금이므로 안전합니다. 모두 안전하지만 ➌의 한 줄 때문에 이 코드는 교착 상태를 일으킵니다.
교착 상태를 예방하려면 잠금 순서를 지켜야 합니다. 그렇다면 잠금을 해제하는 순서는 교착 상태에 영향을 줄까요? 다행히 전혀 영향을 주지 않습니다. 잠금을 해제하는 순서는 여러분 마음대로 한다 해도 교착 상태를 일으키지 않습니다. 다음 한 가지만 기억하세요.
“교착 상태를 예방하려면 첫 번째 잠금 순서를 지켜야 한다(거꾸로 가지 말아야 한다).”