[Java] 41. 생산자 소비자 문제(2)
·
Java/멀티스레드&동시성
생산자 소비자 문제(2)#Java/멀티스레드정리이전 챕터에서 발견했던 생산자가 생산자를 깨우고, 소비자가 소비자를 깨우는 비효율 문제를 어떻게 해결해보자.해결 방안핵심은 생산자 스레드는 데이터를 생성하고, 대기중인 소비자 스레드에게 알려주어야 한다. 반대로 소비자 스레드는 데이터를 소비하고, 대기중인 생산자 스레드에게 알려주면 된다. 결국 생산자 스레드가 대기하는 대기 집합과, 소비자 스레드가 대기하는 대기 집합을 둘로 나누면 된다.대기 집합을 어떻게 분리할 수 있을까? 바로 앞서 학습한 Lock , ReentrantLock 을 사용하면 된다.먼저, synchronized , Object.wait() , Object.notify() 를 통해 작성한 코드를 Lock 인터페이스와 ReentrantLock 구..