![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程并发、锁
文章平均质量分 82
羅煞
这个作者很懒,什么都没留下…
展开
-
处理CAS的ABA问题,AtomicStampedReference与AtomicMarkableReference
CAS是最轻量级的,性能比锁更高,单CPU的开销很大,CAS是英文单词Compare and Swap的缩写,翻译过来就是比较并替换。 CAS原子类操作包括如AtomicBoolean,AtomicUInteger,AtomicLong。它们分别用于Boolean,Integer,Long类型的原子性操作。今天我们主要讲AtomicReference,AtomicStampedReference与AtomicMarkableReference的区别。 AtomicReference 通过volatile原创 2021-04-27 16:07:14 · 192 阅读 · 0 评论 -
ConcurrentSkipListMap和ConcurrentHashMap
ConcurrentSkipListMap TreeMap使用红黑树按照key的顺序(自然顺序、自定义顺序)来使得键值对有序存储,但是只能在单线程下安全使用;多线程下想要使键值对按照key的顺序来存储,则需要使用ConcurrentSkipListMap。 ConcurrentSkipListMap的底层是通过跳表来实现的。跳表是一个链表,但是通过使用“跳跃式”查找的方式使得插入、读取数据时复杂度变成了O(logn)。 跳表(SkipList):使用“空间换时间”的算法,令链表的每个结点不仅记录next原创 2021-04-26 16:55:11 · 1170 阅读 · 0 评论 -
CAS原理
CAS(比较与交换,Compare and swap) 是一种有名的无锁算法,它是乐观锁的一种实现方式。所以在进行CAS原理分析的时候,我们先来了解什么是乐观锁,什么是悲观锁~ 乐观锁与悲观锁 乐观锁和悲观锁是在数据库中引入的名词,但是在我们Java的JUC里面的锁也引入类似的思想!我们来看看两种锁的概念 悲观锁 悲观锁指对数据被外界修改持保守态度,认为数据很容易就会被其他线程修改,所有在数据被处理前先对数据进行加锁,并在整个数据处理过程中,使数据处于锁定状态。我们的传统数据库就会用到这种排它锁的机原创 2021-04-26 16:30:59 · 107 阅读 · 0 评论