
Java并发编程
万无引力 WY
何以解忧 唯有专注
展开
-
ReentrantReadWriteLock
JUC锁: ReentrantReadWriteLock详解ReentrantReadWriteLock源码分析类的继承关系public class ReentrantReadWriteLock implements ReadWriteLock, java.io.Serializable可以看到,ReentrantReadWriteLock实现了ReadWriteLock接口,ReadWriteLock接口只是定义了读锁和写锁的方法体,具体实现需要到子类中去定义。同时还实现了序列化接口。类的内部原创 2020-09-21 07:28:28 · 260 阅读 · 0 评论 -
UC锁 锁核心类AQS详解
JUC锁: 锁核心类AQS详解前几天已经总结过AQS的相关知识点。但是总感觉学的不够扎实,今天根据网上的blog在此进行总结。什么是AQS、为什么它是核心?AQS是用来构造锁和同步器的框架,中文队列同步器。在java中有很多的同步器都是由AQS作为基础核心的。比如:ReentrantLock、Semaphore等等。程序员也可以自己利用AQS定义符合自己需求的同步器。AQS的和核心思想?底层数据结构是什么?核心思想:**宏观:**AQS的核心思想是,如果一个线程正在请求一个空闲的共享资源,那么A原创 2020-09-21 07:22:20 · 456 阅读 · 0 评论 -
JUC原子类: CAS, Unsafe和原子类详解
JUC原子类: CAS, Unsafe和原子类详解CASCAS的全称是Compare-And-Swap,中文含义就是对比并交换。CAS并不是java中的方法,他实际上是CPU的原子指令,==其作用是让CPU先比较两个值是否相等,然后根据判断条件原子性的更新某个位置的值。==CAS是基于硬件平台(Intel、Linux)的汇编指令,也就是说CAS是靠硬件来实现的。而在JVM或者JDK源码中,只是封装了汇编调用方法。比如AtomicInteger类便是使用了这些借口来完成多线程的安全性操作。CAS:输入两原创 2020-09-11 21:50:50 · 854 阅读 · 0 评论 -
java并发编程的艺术-Lock
Java并发编程的艺术-Lock1、锁的内存语义锁可以让临界区互斥执行。对一个锁的解锁,happens-before与随后这个锁的加锁操作。当线程释放锁时,JMM会把线程对应的本地内存中的共享变量刷回主内存,当另一个线程获取锁的时候,JMM会把其本地内存区域的共享变量全都失效,保证锁的临界区域中的共享变量只能从主内存中读取。线程A释放锁,相当于线程A向接下来马上要获取锁的线程传输消息,消息一般指的是线程A对于共享变量的修改。线程B获取锁,相当于线程B接收了释放锁线程的发来的消息以上这两个过程原创 2020-09-11 21:33:42 · 344 阅读 · 0 评论