안녕하세요. 조경완입니다. 이펙티브 자바를 보면 notify 대신에 notifyAll을 쓰라고 되어 있습니다. 사실 더 중요한 것은 Concurrent를 쓰라는 것이지만요. 왜 그런지는 아이템 81에 나와 있으니, deadlock이 발생하는 시나리오에 대해서만 짚고 넘어가 보도록 하겠습니다. 먼저 notify 메서드에 대한 설명을 보겠습니다. 깨우는데, a single thread라 되어 있습니다. 하나의 스레드를 깨웁니다. Object의 모니터에 대해서? Common의 get이나 put에는 wait가 있었는데요. main 클래스에 보면 이런 것이 있었습니다. 저는 Common 객체를 c 하나만 선언했고, put이나 get은 Common 클래스 안에 있었으니, c에 걸리는 무언가 정도로 보시면 됩니다. ..
NOTIFY 검색 결과
해당 글 2건
java notify 메서드와 deadlock
OS/이론
2020. 11. 24. 02:21
왜 wait 메서드는 반복문 안에서 써야 할까요?
누군가에게 이 글에 대한 메일을 받았습니다. if문 안에 wait를 썼는데 문제가 없나요? 이펙티브 자바 3판 item 80에서는 반복문 안에 wait를 쓰라는데. 사실 item 80은 wait notify 대신에 동시성 유틸리티를 쓰라는 겁니다. 그런데, 이 아이템에 언급된 것들 중에 짚고 넘어가야 할 문장들이 꽤 많은데, 그 중 하나는 반복문 안에 wait를 써라. 였습니다. 그만큼 어려우니, 그냥 동시성 유틸리티를 쓰라는 그림이였을지도 모르지만요. 메일로도 언급되었으니 짚고 넘어가겠습니다. 링크에 언급되었던 문제 상황을 바꾸어 보겠습니다. 2명의 생산자가 각각 10개의 item을 생산하고, 2명의 소비자가 각각 10개의 item을 소비합니다. 먼저, worker1 스레드 2개와 worker2 스레드..
OS/이론
2020. 11. 14. 02:11
최근댓글