Java并发编程:阻塞队列

2016/11/29 Java

生产消费模型首选的数据结构。

Queue

一种先进先出(FIFO)的数据结构。

阻塞队列

BlockingQueue在Queue基础上添加的接口:

take:如果队列为空,则阻塞
put :如果队列满,则阻塞
offer(E e, long timeout, TimeUnit unit) :队列满时可以指定阻塞时间,若不指定则返回false
poll(long timeout, TimeUnit unit):队列空时介意指定阻塞时间,不指定返回null

常用阻塞队列

  • ArrayBlockingQueue:有界,构造时要指定大小
  • LinkedBlockingQueue: 创建时可以不指定大小
  • PriorityBlockingQueue:队列中元素要是实现Comparable接口,take时先出优先级高的
  • DelayQueue:队列元素实现Delayed接口,头是存活时间最长元素

实现原理

判断数组是否为空或已满&&线程间通信

Search

    Post Directory