DEADLOCK
-
[Java Multithreading] Dead Lock의 네 가지 조건Java/Multi Threading 기초 2022. 12. 2. 17:30
안녕하세요! 오늘은 앞선 포스팅에 이어서 데드락에 대해 다룰 건데요. 데드락이 일어날 수 있는 조건 네 가지를 알아보겠습니다. 짧은 내용이 될 것 같네요! Dead Lock의 네 가지 조건 데드락이 일어날 수 있는 조건은 '상호 배제', '점유와 대기', '비선점 할당', '순환 대기'의 네 가지입니다. 상호 배제 : 하나의 리소스에, 한 번에 한 스레드만 접근이 가능한 상태. 점유와 대기 : 최소 하나의 스레드가 리소스를 점유하면서 다른 리소스에 대해서는 대기하는 상태. 비선점 할당 : 스레드가 자원을 사용완료해야지만 락을 회수 가능(외부 요인으로 인한 인터럽트 불가능)한 상태. 순환 대기 : 서로 다른 스레드가 서로 다른 자원에 대해 락을 가진..
-
[Java Multithreading] 동기화의 종류와 교착상태Dead LockJava/Multi Threading 기초 2022. 12. 1. 14:35
Java Multithreading 시리즈 안녕하세요 🤗 오늘은 동기화의 종류와 교착상태에 대한 예시를 이야기 해보려고 합니다.아마 익숙한 내용이 될 것 같네요! 세밀하게fine-grained 다루는 락 동기화를 하는 방법 중 가장 쉬운 건 공유 리소스 전체에 락을 거는 것입니다. 이런 방식을 세밀하다fine-grained고 표현합니다. 이에 대한 장단점은 앞선 포스팅에서 많이 다루었기 때문에 아주 간략히만 이야기 하면, 각 실행 스레드가 모든 공유 자원을 사용하는 최악의 경우에는 마치 싱글 스레드 프로그램처럼 느리게(근데 이제 컨텍스트 스위칭을 곁들인) 동작한다는 것이죠. 항상 최악의 경우로 동작하는 건 당연히 아니지만요. 성긴coarse-grained 락 다른 한 가지 방식은 공유자원 별로 락킹 하는..