ConcurrentLinkedQueue 基于链接节点的无界安全队列 无锁 高效 性能好于BlockQueue add(),offer() 加入元素;
poll(),peek() 取头元素节点,poll会删除元素,peek不会。
BlockQueue接口
- ArrayBlockQueue 基于数组阻塞队列实现, 内部维护了一个定长数组缓存数据 没有实现读写分离,所以生产和消费不能完全并行 ,先进先出 也称为“有界队列”。
- LinkedBlockQueue 基于链表阻塞队列, 内部维护这一个由链表构成的缓冲队列 内部采用分离锁(读写分离),可以高效处理并发数据, 也称为“无界队列”
- PriorityBlockQueue 基于优先级的阻塞队列 构造函数传入的对象必须实现Comparable接口,内部控制线程的同步采用公平锁。 “无界队列”
- DelayQueue 带延迟时间的队列。 只有当指定的延迟时间到了,才能从队列中获取到该元素。 DelayQueue里的元素必须实现Delayed接口,没有大小限制的队列, 应用场景:对缓存超时的数据进行移除;任务超时处理;空闲连接的关闭。
- SynchronousQueue 没有缓冲的队列。 生产的数据会直接被消费者消费。