안녕하세요. 조경완입니다. 이펙티브 자바를 보면 notify 대신에 notifyAll을 쓰라고 되어 있습니다. 사실 더 중요한 것은 Concurrent를 쓰라는 것이지만요. 왜 그런지는 아이템 81에 나와 있으니, deadlock이 발생하는 시나리오에 대해서만 짚고 넘어가 보도록 하겠습니다. 먼저 notify 메서드에 대한 설명을 보겠습니다. 깨우는데, a single thread라 되어 있습니다. 하나의 스레드를 깨웁니다. Object의 모니터에 대해서? Common의 get이나 put에는 wait가 있었는데요. main 클래스에 보면 이런 것이 있었습니다. 저는 Common 객체를 c 하나만 선언했고, put이나 get은 Common 클래스 안에 있었으니, c에 걸리는 무언가 정도로 보시면 됩니다. ..
데드락 검색 결과
해당 글 2건
java notify 메서드와 deadlock
OS/이론
2020. 11. 24. 02:21
식사하는 철학자 문제 : 대표적인 데드락 문제를 알아봅시다.
식사하는 철학자 문제는 deadlock을 단적으로 보여주는 문제 중 하나입니다. 젓가락이 5개가 있고, 식사를 하기 위해서, 철학자는 자신의 왼쪽, 오른쪽에 있는 젓가락을 들어야 한다고 해 봅시다. 그런데, 사람들이 자기 왼쪽에 있는 젓가락을 든 상태에서, 오른쪽에 있는 젓가락을 얻으려고 한다면 어떨까요? 그리고, 누군가 젓가락을 뺏을 수 없다면? 이럴 때, deadlock이 발생하게 됩니다. 그러면 이 문제를 풀기 위해서 어떻게 해야 하는지 봅시다. 먼저, flag가 있습니다. 이것은 젓가락이 누군가에 의해 집어진 상태인지를 나타냅니다. 5명이 있으니 int형 5개를 저장하는 array를 선언하였습니다. 그리고 people은 현재 식사를 하고 있는 철학자의 수를 의미하는데요. 왜 이 변수를 썼는지 밑에..
OS/이론
2019. 11. 25. 21:10
최근댓글