面试被问到了,回答的不太好,小记一下
- 内部实现:
ArrayBlockingQueue
使用数组;LinkedBlockingQueue
使用单链表 - 构造时是否必须指定容量:
ArrayBlockingQueue
必须指定;LinkedBlockingQueue
可以指定,也可以不指定(默认为Integer.MAX_VALUE
) - 锁的个数:
ArrayBlockingQueue
只有一把锁;LinkedBlockingQueue
有两把锁:takeLock、putLock
- 存储
count
:ArrayBlockingQueue
使用int
,LinkedBlockingQueue
使用AtomicInteger
,因为有两把锁 - 是否支持公平锁:
ArrayBlockingQueue
支持;LinkedBlockingQueue
不支持,因为有两把锁,没法实现