Deadlock(교착 상태)이란 무엇이며, Java에서 이를 어떻게 방지할 수 있나요? #86
Sung-june27
started this conversation in
Concurrency
Replies: 3 comments
|
Deadlock이란 여러 스레드가 락을 점유한 채 서로가 가진 락을 계속해서 기다리는 상태입니다. Java에서는 설계상으로 락의 획득 순서를 단방향으로 통일하거나, 락의 범위를 최소화하고 중첩 락을 줄여 하나의 락으로 단순화시킬 수 있습니다. |
0 replies
|
데드락은 락을 획득하기 위해 무한히 기다리는 상태를 말합니다. 예를 들어 A,B락이 있을때 프로세스1은 A - B 순서로 락을 획득하여 작업을 완료해야하고, 프로세스2는 B - A 순서로 락을 획득하여 작업을 완료해야 한다면 두 프로세스는 서로의 락을 얻기 위해 무한히 기다리게 됩니다. 자바에서 데드락을 해결책으로는 1개의 락만 사용하거나, 락의 순서를 보장하도록 코드를 구현하거나, ReentrantLock을 이용해서 락 획득에 대한 타임아웃을 설정하는 방법이 있습니다. |
0 replies
|
데드락이란 두 개 이상의 스레드가 서로가 보유한 락을 기다리며 무한히 대기하는 상태를 의미합니다. Java에서는 다음과 같은 방식으로 데드락을 방지합니다.
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
.
All reactions