자바 동시성 프로그래밍 - Java Synchronization
교착 상태 (DeadLock)

데드락 발생 조건
1. 상호 배제 (Mutual Exclusion)
2. 점유 대기 (Hold and Wait)
3. 비선점 (No Preemption)
4. 순환 대기 (Circular Wait)
데드락 예
1. 락 순서에 의한 데드락



2. 동적인 락 순서에 의한 데드락



3. 객체 간의 데드락



데드락 방지와 원인 추적
1. 한번에 하나 이상의 락을 사용하지 않는다.
2. 락의 순서를 잘 조정한다.



3. 락 타임아웃을 건다.

4. 메서드는 오픈 호출 형태로 구현한다.



5. 스레드 덤프를 활용한다.
그 외 활동성 문제
1. 기아 상태 (Starvation)
2. 라이브락 (Livelock)


Last updated