概述
马老师多线程视频学习总结(好记性不如烂笔头)。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());
}
}