首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
aqs
订阅
MichaelPaul0416
更多收藏集
微信扫码分享
微信
新浪微博
QQ
27篇文章 · 0订阅
千呼万唤始出来:JUC灵魂AQS终于来了
synchronized 关键字是JDK官方人员用C++代码写的,在JDK6以前是重量级锁。Java大牛 Doug Lea对 synchronized 性能不满意就自己写了个JUC,以此来显著提升并发性能,本文要讲的就是JUC并发包下的 AbstractQueuedSynchro...
java并发编程系列:牛逼的AQS(上)
设计java的大叔们为了我们方便的自定义各种同步工具,为我们提供了大杀器AbstractQueuedSynchronizer类,这是一个抽象类,以下我们会简称AQS,翻译成中文就是抽象队列同步器。这家伙老有用了,封装了各种底层的同步细节,我们程序员想自定义自己的同步工具的时候,…
并发 - CAS 的操作、实现、原理及优化
在 Java 中很多工具类都在使用 CAS(Compare And Set)用以提升并发的效率以及数据的准确性质。 对于大部分人来说,最常见的应该就是使用 AtomicXXX、以及在使用 Lock 相关的子类 的时候我们知道他们的底层运用了 CAS,也知道 CAS 就是传入一个…
ReentrantReadWriteLock源码解析
ReentrantReadWriteLock从字面意思上就是可重入的读写锁。读写锁的特点就简单来说就是读读之间不互斥,读写或写写之间是互斥的。今天就通过它来解开读写锁的秘密。由于这个类名称太长,后面都简称它为RRWLock。 在解读RRWLock时,先简单看下源码中提供的一个使…
Semaphore源码分析
Semaphore是一个计数信号量,是并发包中提供的用于控制某资源同时被访问的个数,它的本质是一个有个数限制的”共享锁”。 信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时, 线程能获取该许可;否则线程必须等待,直到有…
让人抓头的Java并发(三) 强大的AQS!
AQS是队列同步器AbstractQueuedSynchronizer的简称,是用来构建锁和其他队列同步组件(ReentrantLock、CountDownLatch、Semaphore等)的基础框架。它使用一个volatile修饰的int类型成员变量表示同步状态,使用一个静态…
死磕 java同步系列之ReentrantReadWriteLock源码解析
读写锁是一种特殊的锁,它把对共享资源的访问分为读访问和写访问,多个线程可以同时对共享资源进行读访问,但是同一时间只能有一个线程对共享资源进行写访问,使用读写锁可以极大地提高并发量。 可以看到,读写锁除了读读不互斥,读写、写读、写写都是互斥的。 在看源码之前,我们还是先来看一下R…
Java并发编程,Condition的await和signal等待通知机制
Object类是Java中所有类的父类, 在线程间实现通信的往往会应用到Object的几个方法: wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll() 实现等待/通知机制,同样的…
Java并发之AQS源码分析(二)
我在Java并发之AQS源码分析(一)这篇文章中,从源码的角度深度剖析了 AQS 独占锁模式下的获取锁与释放锁的逻辑,如果你把这部分搞明白了,再看共享锁的实现原理,思路就会清晰很多。下面我们继续从源码中窥探共享锁的实现原理。 调用 doReleaseShared 方法,它会调用…
循序渐进理解AQS(1):如何实现锁
AbstractQueuedSynchronizer(以下简称AQS)是Java中用于构建锁和同步器的框架,许多同步器都可以通过AQS很容易并且高效地构造出来。很多文章已经基于论文和源码对实现进行了解读,本文试着从另外的角度入手:先不考虑AQS的实现,假设让我们自己实现锁,我们…