首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
锁
订阅
北京时间七点整
更多收藏集
微信扫码分享
微信
新浪微博
QQ
10篇文章 · 0订阅
java 并发编程-AQS源码分析
AQS全称是 AbstractQueuedSynchronizer (抽象队列同步器),是通过一个先进先出的队列(存储等待的线程)来实现同步器的一个框架是一个抽象类,是java.util.concurrent包下很多多线程工具类的实现基础。Lock、CountDownLatch…
深入理解AbstractQueuedSynchronizer(AQS)
1. AQS简介 在上一篇文章中我们对lock和AbstractQueuedSynchronizer(AQS)有了初步的认识。在同步组件的实现中,AQS是核心部分,同步组件的实现者通过使用AQS提供的模板方法实现同步组件语义,AQS则实现了对同步状态的管理,以及对阻塞线程进行排…
Java锁之ReentrantLock(二)
首先,直接尝试获取锁,获取成功直接结束。 在队列中,死循环式的判断前任节点是否是头节点,如果是头节点就尝试获取锁,如果不是就把自己挂起,等待前任节点唤醒自己,这样可以避免多个线程死循环带来的性能消耗。 锁释放成功了,接着就会唤醒在队列的后继节点,通过调用LockSupport.…
Java锁之ReentrantLock(一)
1. Sync 2. NonfairSync 非公平锁 根据源码发现 非公平锁继承了Sync父类,由于锁的释放不存在公平与不公平,所以公平锁和非公平锁只实现各自获取锁的逻辑。根据非公平锁的源码发现,其内部只实现了lock()和tryAcquire(int acquires)方法…
啃碎并发(七):深入分析Synchronized原理
记得开始学习Java的时候,一遇到多线程情况就使用synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着学习的进行我们知道在JDK1.5之前synch…
深入理解synchronized关键字
synchronized是并发编程中重要的使用工具之一,我们必须学会使用并且掌握它的原理。 JVM自带的关键字,可在需要线程安全的业务场景中使用,来保证线程安全。 锁的是当前类或者指定类的Class对象。一个类可能有多个实例对象,但它只可能有一个Class对象。 使用synch…
Spring Boot+SQL/JPA实战悲观锁和乐观锁
最近在公司的业务上遇到了并发的问题,并且还是很常见的并发问题,算是低级的失误了。由于公司业务相对比较复杂且不适合公开,在此用一个很常见的业务来还原一下场景,同时介绍悲观锁和乐观锁是如何解决这类并发问题的。 公司业务就是最常见的“订单+账户”问题,在解决完公司问题后,转头一想,我…
JDK并发AQS系列(一)
1995年sun公司发布了第一个java语言版本,可以说从jdk1.1到jdk1.4期间java的使用主要是在移动应用和中小型企业应用中,在此类领域中基本不用设计大型并发场景,当然也没有大型互联网公司使用java,因为担心它本身的性能。 在互联网及服务器硬件迅猛的发展下,sun…
Java并发(7)- 你真的了解 ReentrantReadWriteLock 吗?
在前几篇文章中了解了ReentrantLock、Semaphore与CountDownLatch后,J.U.C包中基于AQS实现的并发工具类还剩一个比较重要的:读写锁ReentrantReadWriteLock。读写锁在Java面试过程中是一个经常性考的题目,他涉及到的知识点比…
Java锁之ReentrantReadWriteLock
上面就是读写锁的获取和释放过程源码,先分析简单的非阻塞获取锁方法,根据源码我们可以知道,写锁和读锁的是否获取也是判断状态是否不为0,写锁的状态获取方法是exclusiveCount(c),读锁的状态获取方法是sharedCount(c)。那么我们接下来分析下这两个方法是如何对统…