ArrayBlockingQueue有界的阻塞队列,内部是一个数组,有边界的意思是:容量是有限的,必须进行初始化,指定它的容量大小,以先进先出的方式存储数据,最新插入的在对尾,最先移除的对象在头部。通过其构造函数,得知其可以当做无界队列也可以当做有界队列来使用。从上面的构造函数中可以看到,这里会初始化一个空的头结点,那么第一个元素入队的时候,队列中就会有两个元素。count的计数值不包含这个头结点。Put源码分析Take源码分析与 ArrayBlockingQueue 对比ArrayBlockingQueue和LinkedBlockingQueue间还有一个明显的不同之处在于,前者在插入或删除元素时不会产生或销毁任何额外的对象实例,而后者则会生成一个额外的Node对象。这在长时间内需要高效并发地处理大批量数据的系统中,其对于GC的影响还是存在一定的区别。

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解

Java高并发BlockingQueue重要的实现类详解