ReentrantLock
文章平均质量分 92
当走的路甚远
这个作者很懒,什么都没留下…
展开
-
Spring - JUC 公平锁和非公平锁原理详解
一、简介Java语言中有许多原生线程安全的数据结构,比如ArrayBlockingQueue、CopyOnWriteArrayList、LinkedBlockingQueue,它们线程安全的实现方式并非通过synchronized关键字,而是通过java.util.concurrent.locks.ReentrantLock来实现。ReentrantLock的实现是基于其内部类FairSync(公平锁)和NonFairSync(非公平锁)实现的。 其可重入性是基于Thread.currentThrea转载 2021-02-25 16:11:02 · 1622 阅读 · 0 评论 -
Spring - JUC ReentrantLock原理
ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层指令实现ReentrantLock主要利用CAS+AQS队列来实现。它支持公平转载 2021-02-25 11:03:28 · 255 阅读 · 0 评论