📅  最后修改于: 2023-12-03 14:42:46.358000             🧑  作者: Mango
Java中的 ConcurrentLinkedQueue 是一种非阻塞式并发队列,基于链接节点的无界队列。它采用了 wait-free 算法实现线程安全,支持高并发场景下的数据存取,性能较传统的同步队列要更好。
以下代码展示了如何使用 ConcurrentLinkedQueue 存储/访问数据,具体注释见代码:
import java.util.concurrent.ConcurrentLinkedQueue;
public class ConcurrentLinkedQueueDemo {
public static void main(String[] args) {
// 创建 ConcurrentLinkedQueue 队列
ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<>();
// 向队列添加元素
queue.offer("Java");
queue.offer("C++");
queue.offer("Python");
// 从队列中取出元素
String s = queue.poll();
System.out.println("取出元素:" + s);
// 获取队列头部元素
String head = queue.peek();
System.out.println("队列头部元素:" + head);
// 获取队列大小
int size = queue.size();
System.out.println("队列大小:" + size);
// 判断队列是否为空
boolean empty = queue.isEmpty();
System.out.println("队列是否为空:" + empty);
}
}
以上代码输出结果如下:
取出元素:Java
队列头部元素:C++
队列大小:2
队列是否为空:false
ConcurrentLinkedQueue 是一种高效且线程安全的无界并发队列,可以用于解决高并发下的数据入列和出列操作。在多线程条件下,ConcurrentLinkedQueue 的性能要优于传统的同步队列(如 Vector 和 ArrayList 等)和阻塞队列(如 ArrayBlockingQueue 和 LinkedBlockingQueue 等)。