-
LinkedBlockingQueueJAVA 2019. 5. 10. 17:31반응형
LinkedBlockingQueue
The optional capacity bound constructor argument serves as a way to prevent excessive queue expansion. The capacity, if unspecified, is equal to Integer.MAX_VALUE.
LinkedBlockingQueue 은 이름에서도 알 수 있듯이 각각의 블로킹 큐가 링크드 노드로 연결된 큐이다. 큐에서 꺼내갈 원소가 없을 경우 해당 쓰레드는 wait 상태에 들어간다. 따라서, LinkedBlockingQueue는 생산자가 많고 하나의 소비자일 경우에 사용하면 좋다. 또한 이 글의 서두에서 언급한 것처럼, LinkedBlockingQueue은 큐의 폭발을 막기 위해 생성자에 큐의 사이즈(ex : capacity 10)를 명시할 수 있도록 설계되었다.
LinkedBlockingQueue 내에 있는 데이터를 가져오기 retrieve 위해 poll()과 take() 메소드를 제공한다. 이 두 메소드의 차이점은 큐가 비어있을 때, poll 메소드는 null을 리턴하거나 Timeout을 설정할 수 있는 반면에, take 메소드는 꺼낼 수 있는 원소가 있을 때까지 기다린다(waiting).
아래 이미지는 LinkedBlockingQueue<List> 예제이다.
반응형'JAVA' 카테고리의 다른 글
JAVA 은닉화 ( encapsulation ) : 캡슐화 (0) 2020.01.02 JAVA 디자인 팩토리 패턴 (0) 2019.12.30 자바7 try-with-resources문 (0) 2019.05.10 IntelliJ 단축키 (0) 2019.04.08 JAVA Get,Set 메소드 정리 (0) 2019.04.08