首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
并发包
订阅
daydayfoot
更多收藏集
微信扫码分享
微信
新浪微博
QQ
6篇文章 · 0订阅
并发编程中条件变量Condition的源码分析
在并发领域中需要解决的两个问题:互斥与同步,互斥指的是同一时刻只允许一个线程访问共享资源,这一点AQS的同步队列已经帮助我们解决了。同步指的是线程间如何进行通信和协作,那么AQS又是如何来解决同步问题的呢?答案就是今天的主角:Condition。 Condition是JUC包下…
可重入锁(ReentrantLock)源码分析
1. ReentrantLock是如何在Java层面(非JVM层面)实现锁的? 2. 什么是公平锁?什么是非公平锁? Lock是JUC包下的一个接口,里面定义了获取锁、释放锁等和锁相关的方法,ReentrantLock是Lock接口的一个具体实现类,它的功能是可重入地独占式地获…
公平锁与非公平锁的对比
1. 问题 在上一篇文章中结合源码介绍了公平锁和非公平锁的实现【文章链接】。这一篇文章将从公平性和性能方面对比一下两者。 在阅读本文之前,可以先思考一下下面两个问题。 1. 非公平锁一定不公平吗? 2. 公平锁与非公平锁的性能谁更好? 2. 对比 主要从公平性和性能这两个方面来…
队列同步器(AQS)源码分析
AQS中获取锁和释放锁的方法很多,今天以acquire()和release()为例来进行源码分析,其他方法的逻辑与这两个方法逻辑基本一样。 以上面demo为例,先创建了一个公平锁,然后调用lock()方法来加锁,最后调用unlock()方法释放锁。在lock()方法中会调用到S…
队列同步器(AQS)的设计原理
1. 前言 在Java中锁所可以分为两大类,一类是通过synchrinized关键字实现的隐式锁,一类是JUC包的锁。前者是通过JVM实现的,后者是根据队列同步器(AQS)实现的,也就是今天的主角。 在JUC包下实现了很多锁以及工具类,例如ReentrantLock、ReadW…
初识CAS的实现原理
1. CAS简介 CAS的全称是Compare And Swap,翻译过来就是比较并交换。假设内存中数据的值为V,旧的预期值为A,新的修改值为B。那么CAS操作可以分为三个步骤:1)将旧的预期值A与内存中的值V比较;2)如果A与V的值相等,那么就将V的值设置为B;3)返回操作是…