首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
线程
订阅
鸭鸭世界第一可爱
更多收藏集
微信扫码分享
微信
新浪微博
QQ
16篇文章 · 3订阅
深入理解AbstractQueuedSynchronizer(AQS)
1. AQS简介 在上一篇文章中我们对lock和AbstractQueuedSynchronizer(AQS)有了初步的认识。在同步组件的实现中,AQS是核心部分,同步组件的实现者通过使用AQS提供的模板方法实现同步组件语义,AQS则实现了对同步状态的管理,以及对阻塞线程进行排…
AbstractQueuedSynchronizer(AQS):并发工具的基石
为了这篇文章,我已经废了,太绕了。我能力有限,没法保证说的清楚。 前提是看官对这块了解一些,尤其是某些概念,比如 CAS、队列、线程生命周期等。 另外注意:这是纯 AQS 源码解析,没有结合实际子类和使用场景,所以理解起来很困难。后期我会再对 AQS 的子类进行解析,加强理解。…
AQS Condition 源码解析
ConditionQueue 是借助 AQS 的 SyncQueue 结构来实现条件变量及等待的功能。
死磕synchronized底层实现
Mark Word(标记字段):默认存储对象的HashCode,分代年龄和锁标志位信息。它会根据对象的状态复用自己的存储空间,也就是说在运行期间Mark Word里存储的数据会随着锁标志位的变化而变化。 Klass Point(类型指针):对象指向它的类元数据的指针,虚拟机通过…
多线程小冷门 StampedLock
在多线程开发中,为了控制线程同步,使用的最多的莫过于synchronized 关键字和重入锁。在JDK8中,又引入了一款新式武器StampedLock。这是一个什么东西呢?英文单词Stamp,意思是邮戳。那在这里有用什么含义呢?傻瓜,请看下面的分解。 第一就是使用悲观的策略,悲…
面试官:说一下公平锁和非公平锁的区别?
上次我们提到了乐观锁和悲观锁,那我们知道锁的类型还有很多种,我们今天简单聊一下,公平锁和非公平锁两口子,以及他们在我们代码中的实践。 开始聊之前,我先大概说一下他们两者的定义,帮大家回顾或者认识一下。 公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是…
Java 并发高频面试题:聊聊你对 AQS 的理解?
在Java多线程编程中,重入锁(ReentrantLock) 和信号量(Semaphore)是两个极其重要的并发控制工具。相信大部分读者都应该比较熟悉它们的使用(如果不清楚的小伙伴,赶快拿出书本翻阅一下)。 但是不知道大家是不是有了解过重入锁和信号量的实现细节? 我就带大家看一…
面试官没想到一个Volatile,我都能跟他扯半小时
Volatile可能是面试里面必问的一个话题吧,对他的认知很多朋友也仅限于会用阶段,今天我们换个角度去看看。 为会出现这个情况呢?那我们就需要聊一下另外一个东西了。 JMM:Java内存模型,是java虚拟机规范中所定义的一种内存模型,Java内存模型是标准化的,屏蔽掉了底层不…
详细了解 Synchronized 锁升级过程
前言 首先,synchronized 是什么?我们需要明确的给个定义——同步锁,没错,它就是把锁。 可以用来干嘛?锁,当然当然是用于线程间的同步,以及保护临界区内的资源。我们知道,锁是个非常笼统的概念
synchronized详解(偏向锁、轻量级锁、锁的存储结构即升级过程)
可能在很多人眼里,在java中提到锁、安全性、同步,首先想到的则是java提供的大佬(synchronized)。那么为什么在多线程下,单单靠一个关键字修饰代码块就可以实现所谓的安全性呢?可以说是对初学者而言及神奇又强大的存在。也成了大多数初学者百试不爽的良药。 但是在…