深入浅出理解锁之—— AbstractQueuedSynchronizer

版权声明:如需转载,请附上原文链接即可 https://blog.csdn.net/doujinlong1/article/details/84899261

深入浅出理解锁之—— AbstractQueuedSynchronizer

在Java中,多线程的情况下需要锁来保证数据的安全。

锁一般分为两类:sychronized 和 Lock

  • sychronized利用的是指令级别的monitor-entermonitor-exit
  • Lock 使用的则是代码级别实现的。在Doug Lea大神的操刀下利用CAS + 自旋 + volatile变量实现。

而在实现之后,并且抽象出了一个实现锁的基础类AbstractQueuedSynchronizer,通过这个类可以快速的实现符合自己要求的锁。

本篇博客是在学习了AQS的代码之后,由浅入深的从最基础的知识一直到AQS的深入理解。

限于水平有限,如果有写的不对的地方还望各位多多指教

一,基础知识——LockSupport

AQS理解之一,基础知识——LockSupport

二,自己设计一个锁

AQS理解之二,自己设计一个锁

三,由刚才写的锁转变成一个公平锁

AQS理解之三,由刚才写的锁转变成一个公平锁

四,看看我们写的和ReentrantLock的公平不公平锁的区别

AQS理解之四,看看我们写的和 ReentrantLock 的公平不公平锁的区别

五,看看AQS的代码实现

AQS理解之五—并发编程中AQS的理解

六,AQS的其他实现类

AQS理解之六,AQS的其他实现类

七,AQS的条件队列

AQS理解之七——AQS中的条件队列

猜你喜欢

转载自blog.csdn.net/doujinlong1/article/details/84899261