java多線程之ConcurrentLinkedQueue

一、簡介

一個基於鏈接節點的無界線程安全隊列。此隊列按照 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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章