ConcurrentLInkedQueue
适用于高并发场景下的队列
基于连接节点的,无界线程安全队列
通过无锁的方式
实现了高并发状态下的高性能
先进先出
队列元素,遵循先进先出的原则
头是最先加入的,尾是最近加入的
null
队列不允许null元素
性能
性能好与BlockingQueue
主要方法
Add()、offer()
都是加入元素,两个方法没有任何区别
Poll()
获取头节点元素,并删除元素
Peek()
获取头节点元素,不会删除
package com.bjsxt.base.coll013;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
import javax.swing.text.html.HTMLDocument.Iterator;
public class UseQueue {
public static void main(String[] args) throws Exception {
// 高性能无阻塞无界队列:ConcurrentLinkedQueue
ConcurrentLinkedQueue<String> q = new ConcurrentLinkedQueue<String>();
q.offer("a");
q.offer("b");
q.offer("c");
q.offer("d");
q.add("e");
System.out.println(q.poll()); // a 从头部取出元素,并从队列里删除
System.out.println(q.size()); // 4
System.out.println(q.peek()); // b
System.out.println(q.size()); // 4
}
}
运行