深入浅出理解锁之—— 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中的条件队列

深入浅出理解锁之—— AbstractQueuedSynchronizer相关推荐

  1. 【java】 从hotspot底层对象结构理解锁膨胀升级过程

    文章目录 1.概述 2. 案例 2.1 对象分布 2.2 偏向锁 2.3 轻量级锁 2.4 重量级锁 M.扩展 1.概述 本文章是视频: 从hotspot底层对象结构理解锁膨胀升级过程 的笔记. 此文 ...

  2. 铂金03:一劳永逸-如何理解锁的可重入问题

    欢迎来到<并发王者课>,本文是该系列文章中的第16篇. 在前面的文章<铂金1:探本溯源-为何说Lock接口是Java中锁的基础>中,我们提到了锁的可重入问题,并作了简单介绍.鉴 ...

  3. 并发王者课-铂金3:一劳永逸-如何理解锁的多次可重入问题

    欢迎来到<并发王者课>,本文是该系列文章中的第16篇. 在前面的文章<铂金1:探本溯源-为何说Lock接口是Java中锁的基础>中,我们提到了锁的可重入问题,并作了简单介绍.鉴 ...

  4. 狂神JUC——8锁现象彻底理解锁

    JUC 1 狂神JUC--传统的Synchronized锁 2 狂神JUC--Lock锁 3 狂神JUC--Lock版生产者和消费者 4 狂神JUC--Synchronized版的生产者和消费者问题 ...

  5. java-深入理解锁升级、锁粗化、锁消除

    一.简介   Java SE 1.6 为了减少获得锁和释放锁带来的性能消耗,引入了"偏向锁"和"轻量级锁".因此,在 Java SE 1.6 一共有 4 种锁的 ...

  6. 从hotspot底层对象结构理解锁膨胀升级过程||深入jdk源码理解longadder的分段cas优化机制——分段CAS优化

    深入jdk源码理解longadder的分段cas优化机制 longadder

  7. 王者并发课-铂金3:一劳永逸-如何理解锁的多次可重入问题

  8. 多线程并发知识,肝完这篇10W+字超详细的文章就够了

    大家好,我是Oldou,今天又到了我们的学习时间了,本文介绍的是多线程相关的知识,文中的内容可能不是很全,但是学习完一定会让自己掉发升级,内容比较多,但是我们千万别放弃,不懂的地方一定要主动花时间去理 ...

  9. 想进大厂?50个多线程面试题,你会多少?(一)

    最近看到网上流传着,各种面试经验及面试题,往往都是一大堆技术题目贴上去,而没有答案. 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让 ...

最新文章

  1. .net精简框架集下的ini文件读取(C#)
  2. 中关村创业大街上的“野心”青年:在这里不用拼爹
  3. 研究 Dubbo 网卡地址注册时的一点思考
  4. 【Python】Python中的类型转换
  5. Python模块:bisect二分算法模块
  6. Redis----centOs7.4 __X64下配置和运行
  7. android ios 对比 组件_Android、iOS历史版本对比
  8. 计算机网络 第五章 课后题答案
  9. python中%s是什么意思_python的%s是什么意思
  10. Java 岗史上最全八股文面试真题汇总,堪称 2022 年面试天花板
  11. 计算机水利工程制图教程,《水利工程制图》.pdf
  12. mybatis表不存在的解决办法
  13. 【简欧风格设计装修案例】华丽而又不失优雅,时尚优雅并存!
  14. 软件测试人员常用的SQL语句
  15. 大学生笔记本购买指南——扫盲版(2019)
  16. Python汉译英小程序
  17. android fm信号强度,FM 收音机灵敏度测试方法
  18. 云文档服务器开小差,回首初中作文
  19. 数据结构-链表 JavaScript | 有图 | 有过程 | 有真相
  20. 【STM32学习笔记】(15)——窗口看门狗(WWDG)详解

热门文章

  1. php篮球比赛,篮球数据API接口 - 【篮球比赛动画直播变化数据】API调用示例代码...
  2. 单相桥式相控整流电路multisim仿真_单相半波可控整流电路电阻负载的Matlab Simulink仿真...
  3. 镜像电流源特点_9000大型地网变频大电流接地特性测量系统介绍
  4. sklearn线性回归
  5. 不再内卷!视觉字幕化新任务合集
  6. 对话系统有哪些最新进展?这17篇EMNLP 2021论文给你答案
  7. 论文盘点:基于图卷积GNN的多目标跟踪算法解析
  8. 从知识图谱到文本:结合局部和全局图信息生成更高质量的文本
  9. CVPR 2019开源论文 | 基于“解构-重构”的图像分类学习框架
  10. 记一次灵活的模型训练生成的pth转onnx文件失败