Java中的阻塞队列(一) -- 阻塞队列概览

Java中的阻塞队列(一) – 阻塞队列概览
Java中的阻塞队列(二) – 有界队列 ArrayBlockingQueue
Java中的阻塞队列(三) – 有界队列 LinkedBlockingQueue
Java中的阻塞队列(四) – 有界优先级队列PriorityBlockingQueue
Java中的阻塞队列(五) --无容量队列SynchronousQueue
Java中的阻塞队列(六) – 延时队列 DelayQueue

二:继承结构

Java中的阻塞队列(一) -- 阻塞队列概览

三:阻塞队列与非阻塞队列

阻塞队列采用Lock锁实现线程的阻塞等待,与普通队列的区别在于提供了元素新增、获取时候的阻塞方法。其实说直白一点就是线程安全

四:谈谈有界*

有界*的定义可以从以下几方面解释:

  1. 实例化是否需要传递初始化容量,比如ArrayBlockingQueue、PriorityBlockingQueue两个使用数组实现的家伙算是有界队列
  2. LinkedBlockingQueue链表实现的队列并不要求实例化容量,但是可以限定最大值,所以既可以说它*,也可以说有界
  3. DelayQueue底层采用PriorityQueue可以自动扩容,但是注意一点就是默认的初始化大小也为11,并且扩容的最大值是Integer.MX_VALUE - 8 。所以应该算是一个*队列
  4. SynchronousQueue不存储数据,有界*就说不上了