首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
高并发与锁
订阅
莫卜一生爱学习
更多收藏集
微信扫码分享
微信
新浪微博
QQ
13篇文章 · 0订阅
初识Lock与AbstractQueuedSynchronizer(AQS)
1. concurrent包的结构层次 在针对并发编程中,Doug Lea大师为我们提供了大量实用,高性能的工具类,针对这些代码进行研究会让我们队并发编程的掌握更加透彻也会大大提升我们队并发编程技术的热爱。这些代码在java.util.concurrent包下。如下图,即为co…
还在用Synchronized?Atomic你了解不?
之前在学习的时候也看过AtomicInteger类很多次了,一直没有去做相关的笔记。现在遇到问题了,于是就过来写写笔记,并希望在学习的过程中解决掉问题。 我们可以发现问题所在:count++并不是原子操作。因为count++需要经过读取-修改-写入三个步骤。举个例子: 所以到这…
死磕 java并发包之AtomicStampedReference源码分析(ABA问题详解)
AtomicStampedReference是java并发包下提供的一个原子类,它能解决其它原子类无法解决的ABA问题。 ABA问题发生在多线程环境中,当某线程连续读取同一块内存地址两次,两次得到的值一样,它简单地认为“此内存地址的值并没有被修改过”,然而,同时可能存在另一个线…
JAVA 中的 CAS
CAS 是现代操作系统,解决并发问题的一个重要手段,最近在看 eureka 的源码的时候。遇到了很多 CAS 的操作。今天就系统的回顾一下 Java 中的CAS。 当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程,其他线程只会收到操作失败的…
从ReentrantLock源码深入理解AQS
AQS,即 AbstractQueuedSynchronizer类,是java并发工具类的底层实现基础,例如ReentrantLock、ReentrantReadWriteLock等都是基于AQS实现的,它将未获取到锁的线程封装在一个节点里面,不同的节点通过连接形成了一个 CH…
如何用Redis实现分布式锁?
上一章节我提到了基于zk分布式锁的实现,这章节就来说一下基于Redis的分布式锁实现吧。 在开始提到Redis分布式锁之前,我想跟大家聊点Redis的基础知识。 setnx 是SET if Not eXists(如果不存在,则 SET)的简写。 用法如图,如果不存在set成功返…
《包你懂系列》类锁和对象锁到底有什么区别,面试重点题型
来,今天让你彻底搞明白类锁和对象锁的区别和使用方式。同学,快跟上。 生活中不存在绝对的自由,绝对的自由通常对应的无序和混沌,只有在道德、法律、伦理的约束下的相对自由,才能使人感受到自由。 而在多线程编程中,锁是至关重要的,锁就是道德,就是法律约束,没有锁的多线程环境将会是混乱的…
Java并发编程序列之线程状态
Hello,大家好,今天开始着手写并发编程序列博客。欢迎大家订阅点赞。谈到并发编程,要谈的东西可就多了,本文作为并发编程序列的第一篇文章,结构如下: 1. 线程的创建方式和常见的线程API 直接继承Thread类 略。 实现Runnable接口,传入到Thread中去。略。 通…
java并发编程系列:牛逼的AQS(上)
设计java的大叔们为了我们方便的自定义各种同步工具,为我们提供了大杀器AbstractQueuedSynchronizer类,这是一个抽象类,以下我们会简称AQS,翻译成中文就是抽象队列同步器。这家伙老有用了,封装了各种底层的同步细节,我们程序员想自定义自己的同步工具的时候,…
深入理解AbstractQueuedSynchronizer(AQS)
1. AQS简介 在上一篇文章中我们对lock和AbstractQueuedSynchronizer(AQS)有了初步的认识。在同步组件的实现中,AQS是核心部分,同步组件的实现者通过使用AQS提供的模板方法实现同步组件语义,AQS则实现了对同步状态的管理,以及对阻塞线程进行排…