首页 > 技术文章 > Java 阻塞和同步队列

ruhuanxingyun 2020-02-11 18:10 原文

1. 队列和栈

  队列:就像管道,排队在,先进先出(FIFO);

  栈:就像桶,先进后出。

2. 阻塞队列(BlockingQueue)

  A. 阻塞队列:由于队列有容量限制,故当队列元素已满时,新增加的元素必须等待,或当队列元素取出已空时,也会阻塞等待新的元素;

  B. ArrayBlockingQueue API的使用

方法 抛出异常 返回特殊值 一直阻塞 超时退出
插入 存 add -> java.lang.IllegalStateException offer -> false put offer(e, time)
移除 取 remove - > java.util.NoSuchElementException poll -> null take poll(e, time)
检查队首 element peek -> null - -

3. 同步队列(SynchronousQueue)

  A. 同步队列:不存储元素,队列是空的,即每一个put操作,必须等待一个take,否则无法继续添加元素。

推荐阅读