-
[Java Multithreading] Dead Lock의 네 가지 조건Java/Multi Threading 기초 2022. 12. 2. 17:30
안녕하세요! 오늘은 앞선 포스팅에 이어서 데드락에 대해 다룰 건데요. 데드락이 일어날 수 있는 조건 네 가지를 알아보겠습니다. 짧은 내용이 될 것 같네요!
Dead Lock의 네 가지 조건
데드락이 일어날 수 있는 조건은 '상호 배제', '점유와 대기', '비선점 할당', '순환 대기'의 네 가지입니다.
- 상호 배제 : 하나의 리소스에, 한 번에 한 스레드만 접근이 가능한 상태.
- 점유와 대기 : 최소 하나의 스레드가 리소스를 점유하면서 다른 리소스에 대해서는 대기하는 상태.
- 비선점 할당 : 스레드가 자원을 사용완료해야지만 락을 회수 가능(외부 요인으로 인한 인터럽트 불가능)한 상태.
- 순환 대기 : 서로 다른 스레드가 서로 다른 자원에 대해 락을 가진 뒤, 상대 스레드가 점유한 리소스에 대해 락을 얻으려고 하는 상태.
지난 포스팅의 마지막 예시가 순환 대기에 딱 해당되죠? 😄
위에 말씀드린 것처럼, 이러한 조건이 모두 갖춰지면 데드락이 일어나는데요. 그러면 데드락을 예방하는 방법은 어떻게 될까요? 네 가지 조건 중 하나라도 해결하면 데드락이 일어나지 않겠죠! 🤗다음 포스팅부터는 데드락을 해결하는 몇 가지 방안에 대해 이야기 해보겠습니다.
감사합니다!'Java > Multi Threading 기초' 카테고리의 다른 글
[Java Multithreading] Deadlock 해결 방안 2 - ReentrantLock (0) 2022.12.16 [Java Multithreading] DeadLock 해결 방안 1 - 순환 대기 회피 (0) 2022.12.15 [Java Multithreading] 동기화의 종류와 교착상태Dead Lock (0) 2022.12.01 [Java Multithreading] 경쟁상태RaceCondition와 데이터경쟁DataRace (0) 2022.11.25 [Java Multithreading] 원자적 연산과 volatile (1) 2022.11.10 [Java Multithreading] 임계 영역과 동기화 (0) 2022.10.28