질문의 목적
- 멀티쓰레드에서 발생할 수 있는 데드락의 개념을 묻는 문제이다.
DeadLock in Java
- 두 세개의 쓰레드가 영원히 서로가 끝나기만을 기다리는 것
- when multiple threads need the same locks but obtain them in different order
- 교착상태라고도 한다
Keyword check
- 멀티스레드가 서로의 락을 기다리며 영원히 블락이 되어있어서 프로그램이 더이상 진행되지 않는 상황
데드락을 피하는 방법
- 하나 이상의 멀티플 락을 선점하지 않는다
- sync 블럭 내에 sync 블럭을 포함하는 nested lock을 피한다
- lock을 얻는 순서를 동일하게 한다
- 퍼포먼스가 중요하지 않다면 single thread를 사용함