从Java内置队列到CAS

简介: 从Java内置队列到CAS

Java的内置队列


1.基于数组的线程安全队列

ArrayBlockingQueue

基于数组实现 线程安全 通过加锁的方式来保证线程安全

2基于链表的线程安全队列

LinkedBlockingQueue 通过锁的方式来实现线程安全

ConcurrentLinkedQueue compare and swap CAS

LinkedTransferQueue compare and swap CAS

Cache 之间的速度比较 如果还不了解cache 下面这个链接将的很好

推荐阅读


https://zhuanlan.zhihu.com/p/102293437


以及CAS 计算机底层CPU是如何CAS


https://zhuanlan.zhihu.com/p/115355303


Bus Lock -> Cacheline Lock

CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。

CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。

为了减少Java的垃圾回收对系统性能的影响,会尽量选择array/heap格式的数据结构 ArrayBlockingQueue


ArrayBlockingQueue的问题

ArrayBlockingQueue在实际使用过程中,会因为加锁和伪共享等出现严重的性能问题


目录
相关文章
|
2月前
|
前端开发 Java
java中的Queue队列的用法
java中的Queue队列的用法
21 1
|
2月前
|
存储 安全 算法
解读 Java 并发队列 BlockingQueue
解读 Java 并发队列 BlockingQueue
23 0
|
4月前
|
Java
队列(JAVA)
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的性质。
23 0
|
5月前
|
Java
225. 用队列实现栈 --力扣 --JAVA
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
46 1
|
5天前
|
安全 Java 程序员
【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
11 0
|
6天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
22 0
|
15天前
|
存储 安全 Java
【Java EE】CAS原理和实现以及JUC中常见的类的使用
【Java EE】CAS原理和实现以及JUC中常见的类的使用
|
19天前
|
存储 安全 Java
Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列
Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列
|
21天前
|
存储 Java C++
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
25 0
|
29天前
|
消息中间件 Java API
RabbitMQ入门指南(五):Java声明队列、交换机以及绑定
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了Java声明队列、交换机以及绑定队列和交换机等内容。
32 0