경쟁 상태의 이상 동작인
Livelock과
Starvation을 살펴봅니다:
Deadlock과 무엇이 다른지, 코드와 로그에서는 어떻게 보이는지. Java 예제 포함: “예의 바른 작업자들”(활성 교착, livelock)과 우선순위, 불공정 락 때문에 생기는 기아. 문제를 발견하는 법(로깅,
Thread dump,
VisualVM,
Java Mission Control)과 예방하는 법: 재시도 전 랜덤 지연 추가(
Thread.sleep), 논블로킹 알고리즘,
ReentrantLock의 fairness 플래그(
new
ReentrantLock(true))로 공정 락 사용, 신중한 임계 구역 설계,
setPriority()와
synchronized 남용 지양.