java多线程之ConcurrentLinkedQueue

版权声明:本文为博主原创文章,未经博主允许不得转载。 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());
    }

}

三、结果

  

参考:https://www.cnblogs.com/yangzhenlong/p/8359875.html

猜你喜欢

转载自blog.csdn.net/u010739551/article/details/89467413