首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
深入学习并发知识
程序员书虫
创建于2021-09-01
订阅专栏
深入学习并发知识
等 5 人订阅
共16篇文章
创建于2021-09-01
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
基于 AQS 分析 Semaphore
图解+源码+白话讲解 基于 AQS 分析 Semaphore 「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」
基于 AQS 分析 CyclicBarrier
图解源码分析 基于 AQS 分析 CyclicBarrier 「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」
基于 AQS 分析 CountDownLatch
基于 AQS 分析 CountDownLatch 「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」
基于 AQS 分析 Condition
图解 + 白话讲解 基于 AQS 分析 Condition 「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」
ReentrantReadWriteLock之写读互斥
图文讲解的方式学习 ReentrantReadWriteLock之写读互斥 「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」
ReentrantReadWriteLock之读写互斥
并发工具类 ReentrantReadWriteLock之读写互斥 「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」
基于AQS 分析 ReentrantLock
基于AQS 分析 ReentrantLock 「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」 代码案例 代码运行结果 代码解释 开启了两个线程,通过加锁的方式每次保证只
并发条件队列之Condition 精讲
1. 条件队列的意义 Condition将Object监控器方法( wait , notify和notifyAll )分解为不同的对象,从而通过与任意Lock实现结合使用,从而使每个对象具有多个等待集。 Lock替换了synchronized方法和语句的使用,而Conditio…
AQS之ReentrantReadWriteLock写锁
1. 用法 2. 获取写锁源码分析 acquireQueued(addWaiter(Node.EXCLUSIVE), arg))****,中的acquireQueued方法和addWaiter方法在前面的文章中都已经进行了详细的解释说明。 3. 获取写锁流程图 首先获取c、w。…
AQS之ReentrantReadWriteLock精讲分析上篇
ThreadLocalHoldCounter重写了ThreadLocal的initialValue方法,ThreadLocal类可以将线程与对象相关联。在没有进行set的情况下,get到的均是initialValue方法里面生成的那个HolderCounter对象 如果写锁未被…
一文带你学会AQS和并发工具类的关系2
当传入的参数值为true的时候创建的对象为**new FairSync()**公平锁。 注意一下只有当返回false的时候才是tryAcquire失败的时候。此时就会走到繁琐的**addWaiter(Node.EXCLUSIVE)**方法 enq(node)方法是节点入队的方法…
一文带你学会AQS和并发工具类的关系
1. 存在的意义 AQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。 提供一个框架,用于实现依赖于先进先出(FIFO)等待队列…
Lock锁 精讲
Lock和synchronized这两个最常见的锁都可以达到线程安全的目的,但是功能上有很大不同。 与使用synchronized方法和语句相比, Lock实现提供了更广泛的锁操作。 它们允许更灵活的结构,可以具有完全不同的属性,并且可以支持多个关联的Condition对象。 …
Synchronized 精讲
注意:他们是将自己工作内存中的值进行改变刷回主内存,假设当前count的值为8,t1、t2将count的值复制到自己的工作内存中进行修改,如果此时t1将count变成9、t2此时也将count的值变成9,当t1、t2两个线程都将值刷回主内存的时候count值为9,并不是10,这…
volatile 关键字精讲
在当前场景中就可能出现在处理器 A 和处理器 B 没有将它们各自的写缓冲区中的数据刷回内存中, 将内存中读取的A = 0、B = 0 进行给X和Y赋值,此时将缓冲区的数据刷入内存,导致了最后结果和实际想要的结果不一致。因为只有将缓冲区的数据刷入到了内存中才叫真正的执行 计算机在…
Java内存模型精讲
线程间通讯的本质是 :JMM即 JAVA 内存模型进行控制,JMM决定了一个线程对共享变量的写入何时对其他线程可见。 由上图能看出来线程间的通讯都是通过主内存来进行传递消息的, 每个线程在进行共享数据处理的时候都是将共享的数据复制到当前线程本地(每个线程自己都有一个内存)来进行…