版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010739551/article/details/89467413
一、简介
一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部 是队列中时间最长的元素。队列的尾部 是队列中时间最短的元素。 新的元素插入到队列的尾部,队列获取操作从队列头部获得元素。当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。此队列不允许使用 null 元素。
二、例子
import java.util.Iterator;
import java.util.concurrent.ConcurrentLinkedQueue;
/**
* 一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。
* 队列的头部 是队列中时间最长的元素。队列的尾部 是队列中时间最短的元素。
* 新的元素插入到队列的尾部,队列获取操作从队列头部获得元素。
* 当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。
* 此队列不允许使用 null 元素。
*/
public class ConcurrentLinkedQueueTest {
public static void main(String[] args) {
//安全队列(先进先出)
ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<String>();
System.out.println("===================");
queue.offer("e1");//插入元素
System.out.println("peek: "+queue.peek());//取数据不删除
System.out.println("isEmpty: "+queue.isEmpty());
System.out.println("===================");
System.out.println("poll: "+queue.poll());//取数据并删除
System.out.println("isEmpty: "+queue.isEmpty());
System.out.println("===================");
queue.offer("e1");
queue.offer("e2");
System.out.println("poll e1: "+queue.poll());//先进先出
System.out.println("poll e2: "+queue.poll());//先进先出
System.out.println("isEmpty: "+queue.isEmpty());
System.out.println("===================");
queue.offer("e1");
System.out.println("contains: "+queue.contains("e1"));
System.out.println("remove: "+queue.remove("e1"));
System.out.println("isEmpty: "+queue.isEmpty());
System.out.println("===================");
queue.offer("a1");
queue.offer("a2");
Object[] sArray = queue.toArray();
System.out.println("toArray: "+sArray[0]+","+sArray[1]);
System.out.println("isEmpty: "+queue.isEmpty());
System.out.println("===================");
Iterator<String> iterator = queue.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
System.out.println("isEmpty: "+queue.isEmpty());
}
}
三、结果