TransferQueue

TransferQueue (전송 큐 인터페이스)

프로듀서가 소비자가 요소를 받아갈 때까지 기다릴 수 있는 BlockingQueue예요. 메시지 전달 응용에서 유용한데, 프로듀서는 때로 transfer(E)로 소비자가 takepoll로 받아갈 때까지 기다리고, 다른 때는 put으로 받아감을 기다리지 않고 enqueue할 수 있어요.

출처: Java API Reference

본문

TransferQueue<E>BlockingQueue<E>를 확장한 인터페이스예요. 핵심 전송 메서드 외에도 다음 기능을 제공해요.

  • transfer(E)는 요소를 소비자에게 직접 전달할 때까지 기다려요.
  • tryTransfer(E)tryTransfer(E, long, TimeUnit)은 비블로킹 또는 시간 제한 버전이에요.
  • hasWaitingConsumer()로 항목을 기다리는 쓰레드가 있는지 조회할 수 있어요. 이는 peek과 반대되는 개념이에요.

다른 블로킹 큐처럼 TransferQueue도 용량이 제한될 수 있어요. 그 경우 전송 연산은 처음에 사용 가능한 공간을 기다리다가, 이후 소비자가 받아갈 때까지 기다릴 수 있어요.

용량이 0인 큐, 예를 들어 SynchronousQueue에서는 puttransfer가 사실상 동의어가 돼요.

이 인터페이스는 Java Collections Framework의 구성원이에요. 코드와 시그니처는 원문 그대로 보존돼요.

더 알아보기