上篇文章已经对多线程有个初步的认识了,这次我们来看看Java的Lock锁,主要有以下知识点:
AQS
在学习Lock锁之前,我们先来看看什么是AQS?
AQS
- AQS其实就是一个可以给我们实现锁的框架,juc包中很多可阻塞的类比如 ReentrantLock、 ReadWriteLock都是基于AQS构建的。
- 内部实现的关键是: 先进先出的队列、state状态
- 在AQS中实现了对等待队列的默认实现,子类只要重写部分的代码即可实现(大量用到了模板代码)
- AQS同时提供了 互斥模式(exclusive)和共享模式(shared) 两种不同的同步逻辑。一般情况下,子类只需要根据需求实现其中一种模式,当然也有同时实现两种模式的同步类,如
ReadWriteLock
。
参考
Java3y多线程
Java技术之AQS详解
原文
https://segmentfault.com/a/1190000020806586