LinkedTransferQueue源码解析

245 阅读1分钟

1. 介绍

​ 基于链表的无界阻塞队列,FIFO,jdk7提供,继承自TransferQueueTransferQueue继承自BlockingQueue,所以具有自己独特的特征。

2. TransferQueue接口

如果生产者等待消费者接收了元素,可以用TransferQueue,生产者调用transfer方法会收到消费者调用take或者poll方法获取元素时的凭据,生产者用put方法则不会。

image.png   1.tryTransfer(E):将元素立刻给消费者。准确的说就是立刻给一个等待接收元素的线程,如果没有消费者就会返回false,而不将元素放入队列。

  2.transfer(E):将元素给消费者,如果没有消费者就会等待。

  3.tryTransfer(E,long,TimeUnit):将元素立刻给消费者,如果没有就等待指定时间。给失败返回false。

  4.hasWaitingConsumer():返回当前是否有消费者在等待元素。

  5.getWaitingConsumerCount():返回等待元素的消费者个数