点赞关注,不再迷路,你的支持对我意义重大!
🔥 Hi,我是丑丑。本文 「Java 路线」| 导读 —— 他山之石,可以攻玉 已收录,这里有 Android 进阶成长路线笔记 & 博客,欢迎跟着彭丑丑一起成长。(联系方式在 GitHub)
前言
目录
1. 前置知识
这篇文章的内容会涉及以下前置 / 相关知识,贴心的我都帮你准备好了,请享用~
2. AQS 概述
2.1 定义
AQS(AbstractQueuedSynchronizer)队列同步器是构建锁或者其他同步组件的基本框架,内部通过一个 int 成员变量来标识同步状态,通过队列来实现线程获取资源的排队工作。
2.1 模板模式
AQS 同步器的设计基于模板设计模式,即:在抽象父类中定义算法的执行骨架,而其中的某一些步骤在子类中实现。
private volatile int state;
显式锁 Lock
CLH 队列锁 没有拿到锁的线程排队
QNode:myPred locked
申请线程仅仅在本地变量上自旋,它不断轮询前驱的状态,假设发现前驱释放了锁就结束自旋。
addWaiter()
wait-notify 机制 等待队列、同步队列 notify会将等待队列头结点移动到同步队列拿锁
公平锁
FairSync 和 NonFairSync 实现很像
可重入:获得锁后再次获得锁会不会阻塞(判断是否是当前线程)
创作不易,你的「三连」是丑丑最大的动力,我们下次见!













网友评论