데이터베이스 연결 풀과 같은 리소스 풀을 구현하려는 경우. 어떤 동시 수집을 사용 하시겠습니까? BlockingQueue
또는 Semaphore
?BlockingQueue 대 Semaphore
생산자 - 소비자 디자인 패턴과 마찬가지로 BlockingQueue
의 경우 생산자는 모든 연결을 대기열에 배치하고 소비자는 대기열에서 다음에 사용 가능한 연결을 취합니다.
Semaphore
의 경우 세마포어를 풀 크기로 지정하고 풀 크기에 도달 할 때까지 허가를 얻고 그 중 누구라도 허가를 해제하고 풀에 자원을 넣을 때까지 기다립니다.
어느 것이 더 간단하고 쉽습니까? 우리는 하나만 사용할 수 있지만 다른 것은 사용할 수없는 시나리오는 무엇입니까?
BlockingQueue에 요청을하지 않으려면 _connections_를 BlockingQueue에 넣습니다. – jtahlborn
맞습니다. 저를 업데이트 해주세요. – peter