社区
Java SE
帖子详情
java中AQS框架中的疑惑,SHARED和EXCLUSIVE两个常量
a7895906
2017-08-01 07:21:00
AQS框架类 AbstractQueuedSynchronizer中有一个内部类Node, 含有两个常量 SHARED = new Node()和 EXCLUSIVE = null来表示该线程是独占还是共享,我不明白的是,为什么不能用普通的boolean型或者int型来标识,而是要定义成 SHARED = new Node(), EXCLUSIVE = null来解释。。。我看了半天源码没看懂,求大神们指点一二。
...全文
248
回复
打赏
收藏
java中AQS框架中的疑惑,SHARED和EXCLUSIVE两个常量
AQS框架类 AbstractQueuedSynchronizer中有一个内部类Node, 含有两个常量 SHARED = new Node()和 EXCLUSIVE = null来表示该线程是独占还是共享,我不明白的是,为什么不能用普通的boolean型或者int型来标识,而是要定义成 SHARED = new Node(), EXCLUSIVE = null来解释。。。我看了半天源码没看懂,求大神们指点一二。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Java
-JUC-多线程 进阶
来自B站 遇见狂神说
java
-
AQS
简介
一、什么是
AQS
AQS
,在
java
.util.concurrent.locks包
中
,AbstractQueuedSynchronizer这个类是并发包
中
的核心,了解其他类之前,需要先弄清楚
AQS
。
AQS
就是一个同步器,要做的事情就相当于一个锁,所以就会有
两个
动作:一个是获取,一个是释放。获取释放的时候该有一个东西来记住他是被用还是没被用,这个东西就是一个状态。如果锁被获取了,也就是被用了,还有很多其他的要来获取锁,总不能给全部拒绝了,这时候就需要他们排队,这里就需要一个队列。
AQS
的核心思想是:
Java
锁机制
文章目录CAS(比较并交换-乐观锁机制-锁自旋)概念及特性ABA问题
AQS
(抽象队列同步器)
AQS
定义两种资源共享方式
Excl
usive
独占资源-ReentrantLockShare共享资源-Semaphore/CountDownLatch自定义同步器Mark Word乐观锁悲观锁可重入锁(递归锁)公平锁和非公平锁
JAVA
中
的锁ReentrantLockReentrantLock与synchronizedCondition 类和Object 类锁方法区别共享锁和独占锁ReadWriteLock 读写锁自旋
Java
&
AQS
& 总结
AQS
类是
Java
设计用于在并发环境下保护资源的API。
AQS
类将“安全/同步”概念交由子类明确/实现。
AQS
类是J.U.C包下各类线程控制工具的底层实现方案。
Java
并发之
AQS
全面详解
AQS
全称 AbstractQueuedSynchronizer,即抽象的队列同步器,是一种用来构建锁和同步器的
框架
。基于
AQS
构建同步器:优势:2.1
AQS
核心思想 如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制
AQS
是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列
中
。如图所示:Sync queue: 同步队列,是一个双向列表。包括head节点和t
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章