美文网首页
「Java 路线」| AQS 队列同步器

「Java 路线」| AQS 队列同步器

作者: 彭旭锐 | 来源:发表于2021-01-03 18:38 被阅读0次

点赞关注,不再迷路,你的支持对我意义重大!

🔥 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 实现很像

可重入:获得锁后再次获得锁会不会阻塞(判断是否是当前线程)


创作不易,你的「三连」是丑丑最大的动力,我们下次见!

相关文章

网友评论

      本文标题:「Java 路线」| AQS 队列同步器

      本文链接:https://www.haomeiwen.com/subject/fdtuoktx.html