JUC集合-BlockingQueue

BlockingQueue 阻塞队列,支持两个附加操作。

1,在队列为空时,获取元素的线程会等待对列变为非空。

2,在队列为满时,存储元素的线程会等待对列可用。

使用场景:

生产者往对列里添加元素

消费者从对列里拿元素

操作

方法\处理 抛异常 返回特殊值 一直阻塞 超时退出
入队 add(e) offer(e) put(e) offer(e, time, unit)
出队 remove poll take poll(time, unit)
查询 element peek    
  • 抛出异常:满队列时,执行入队会抛出异常;空队列时执行出队会抛出异常 。

  • 返回特殊值:入队操作会返回布尔值;出队操作成功返回操作值,失败返回空值。

  • 一直阻塞:满队列时,执行入队会进入条件等待队列,线程阻塞;空队列时,执行出队会进入条件等待队列,线程阻塞 。

  • 超时退出:满队列时,执行入队会阻塞生产者线程一段时间,如果超过一定的时间,生产者线程就会退出。

posted on 2018-01-12 20:10  zhaofeng555  阅读(653)  评论(0编辑  收藏  举报