티스토리 뷰

원문 : BlockingQueue

java.util.Queue 는 개체를 꺼내오고자 할 때 해당 Queue 가 비어있지 않을 때까지 기다리거나, 개체를 저장하고자 할 때, 해당 Queue에 공간이 생길 때까지 기다리도록 하는 동작을 부가적으로 제공합니다.
(java.util.Queue에서 제공하고 있는 삽입, 제거 관련 method 는 add, remove, offer, poll입니다. add와 remove의 경우, 개체를 저장해야 하는데, 저장할 공간이 부족하거나, 개체를 꺼내와야 하는데, 개체가 없을 때, Exception 을 발생시키고, offer와 poll의 경우는 false와 null을 반환합니다. 위의 내용이 정확히 무슨 내용인지 모르겠지만, offer와 poll을 이용해서, 기다리도록 하는 동작을 구현하라는 의미인것도 같고,)

BlockingQueue 는 네 가지 형태의 method 를 제공합니다. 이 네 가지 형태의 method 의 차이점은, 의도한 동작이 바로 만족스럽게 동작하지 않았을 때(하지만 미래의 어느 시점에서는 제대로 처리될 수 있는), 발생한 문제를 다루는 방식에 있습니다.
첫 번째 형태의 method는 Exception을 발생시킵니다. 두 번째는 null이나 false 등의 특정 값을 반환하고, 세 번째는 작업이 완수될 때 까지 해당 Thread 를 정지시킵니다. 그리고 네번째는 해당 Thread를 정지시킬 최대한의 시간을 정해놓습니다.
정리한 표는 다음과 같습니다


Throws exception Special value Blocks Times out
Insert add(e) offer(e) put(e) offer(e, time, unit)
Remove remove() poll() take() poll(time, unit)
Examine element() peek() not applicable not applicable

BlockingQueue 에는 null 개체를 저장할 수 없습니다.  add, put method 를 이용해 null 을 저장하면, NullPointerException 이 발생합니다. null 은 sentinel value 또는 poll opration 의 실패를 의미합니다.

BlockingQueue 는 보통 크기에 제한을 가집니다. blocking 없이



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함