Java并发容器-ConcurrentLinkedQueue

Java并发容器-ConcurrentLinkedQueue

概述

马老师多线程视频学习总结(好记性不如烂笔头)。Java并发容器-ConcurrentLinkedQueue学习。

简介

  • 实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,阻塞队列就是通过使用加锁的阻塞算法实现的;另一种非阻塞的实现方式则可以使用循环CAS(比较并交换)的方式来实现。
  • ConcurrentLinkedQueue是一个基于链表实现的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部,当我们获取一个元素时,它会返回队列头部的元素。默认情况下head节点存储的元素为空,tair节点等于head节点。

示例代码

package com.wz.code.test.thread.Concurrent;

import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;

public class ConcurrentQueue {

    public static void main(String[] args) {
        Queue<String> queue = new ConcurrentLinkedQueue<>();

        for (int i = 0; i < 10; i++) {
            queue.offer("a" + i);
        }

        System.out.println(queue);
        System.out.println(queue.size());

        // 取值,删除
        System.out.println(queue.poll());
        System.out.println(queue.size());

        // 不删除
        System.out.println(queue.peek());
        System.out.println(queue.size());
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wz122330/article/details/88317853