版权声明:如需转载,请附上原文链接即可 https://blog.csdn.net/doujinlong1/article/details/84899261
深入浅出理解锁之—— AbstractQueuedSynchronizer
在Java中,多线程的情况下需要锁来保证数据的安全。
锁一般分为两类:sychronized 和 Lock
- sychronized利用的是指令级别的monitor-enter 和 monitor-exit。
- Lock 使用的则是代码级别实现的。在Doug Lea大神的操刀下利用CAS + 自旋 + volatile变量实现。
而在实现之后,并且抽象出了一个实现锁的基础类AbstractQueuedSynchronizer,通过这个类可以快速的实现符合自己要求的锁。
本篇博客是在学习了AQS的代码之后,由浅入深的从最基础的知识一直到AQS的深入理解。
限于水平有限,如果有写的不对的地方还望各位多多指教
一,基础知识——LockSupport
二,自己设计一个锁
三,由刚才写的锁转变成一个公平锁
四,看看我们写的和ReentrantLock的公平不公平锁的区别
AQS理解之四,看看我们写的和 ReentrantLock 的公平不公平锁的区别