并发编程 - 阻塞队列(二) - LinkedBlockingQueue

前言

LinkedBlockingQueue:由链表组成的有界阻塞队列。


源码分析


构造器

提供了三种构造器方法。

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue


插入


add

对已满队列插入元素,会抛出IllegalStateException异常。

并发编程 - 阻塞队列(二) - LinkedBlockingQueue


offer

插入元素成功,则返回true;否则返回false。
并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue


put

如果队列已满,执行插入操作的线程会被阻塞,直到队列不满。

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue


offer(…)

如果队列已满,则超时等待,如果队列到截止时间仍然是满的状态,返回false。
并发编程 - 阻塞队列(二) - LinkedBlockingQueue


删除


remove

执行删除操作时,如果队列为空,则抛出NoSuchElementException异常。
并发编程 - 阻塞队列(二) - LinkedBlockingQueue


poll

如果队列为空,返回null。

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue


take

如果队列为空,对执行删除操作的线程阻塞,直到队列不为空。
并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue


poll(…)

如果队列为空,进行超时等待,如果到超时的截止时间,队列仍然为空,则返回null。

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

并发编程 - 阻塞队列(二) - LinkedBlockingQueue


检查


element

返回但不删除队列的队首元素,如果为空,则抛出NoSuchElementException异常。

并发编程 - 阻塞队列(二) - LinkedBlockingQueue


peek

返回但不删除队列的队首元素,如果为空,返回null。

并发编程 - 阻塞队列(二) - LinkedBlockingQueue

上一篇:Java中的阻塞队列LinkedBlockingQueue


下一篇:Java并发队列BlockingQueue实现之LinkedBlockingQueue源码分析