![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
文章平均质量分 87
Byte、data
这个作者很懒,什么都没留下…
展开
-
读写锁-ReadWriteLock
读写锁一.读写状态的设计二.写锁的获取和释放三.读锁的获取与释放四.锁降级一.读写状态的设计回想之前ReentrantLock重入锁中,同步状态state表示锁被一个线程重复获取的次数。读写锁的同步状态state表示维护多个读线程和一个写线程的状态,这个同步状态的高16位表示读状态,低16位表示写状态假设当前同步状态值为S,写状态等于S & 0x0000FFFF(将高16位全部抹去),读状态等于S>>>16(无符号补0右移16位)。当写状态增加1时,等于S+1(低16位的原创 2021-03-12 19:25:01 · 229 阅读 · 0 评论 -
重入锁-ReentrantLock
ReentrantLock一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-03-12 12:26:27 · 3152 阅读 · 0 评论 -
CAS的内存语义
一.首先介绍CAS的含义使用CAS操作要两个变量,即预期值expect和更新值update都是 int类型的;JDK文档对该方法的说明如下:如果当前状态值等于预期值,则以原子方式将同步状态值设置为给定的更新值。此操作具有volatile读和写的内存语义;二.从编译器和处理器的角度来分析CAS如何具有volatile读和写的内存语义前面学过了volatile具有禁止指令重排序的作用,即:1)编译器不会对volatile读和volatile读后面的任意内存操作重排序;2)编译器不会对volatil原创 2021-03-10 14:34:22 · 467 阅读 · 0 评论 -
Synchronized和Volatiole关键字的作用及区别
一.synchronized关键字的作用多线程共同操作共享数据时。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块;synchronized可以保证一个线程的变化可见(可见性),即可以代替 volatile。二.volatile关键字作用保证变量可见性禁止指令重排序目的:1.避免了多线程环境下程序出现乱序执行的现象 ;2.防止编译器和处理器对某些不存在数据依赖的数据进行重排序导致结果出错;保证此变量对所有的线程的可见原创 2021-03-08 17:35:33 · 460 阅读 · 0 评论 -
AQS总结和部分源码分析
AQS1.介绍队列同步器的接口2.队列同步器的实现分析1.同步队列介绍2.独占式同步状态获取和释放3.共享式同步状态获取和释放4.独占式超时获取同步状态和释放1.介绍1 . 队列同步器AbstractQueuedSynchronizer(简称同步器), 用来构建锁或者其他同步组件的基础框架,它使用一个int成员变量(用volatile修饰的) 表示同步状态,通过内置的FIFO同步队列来完成对资源获取线程的排队工作.2 . 同步器的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态原创 2021-03-11 21:23:14 · 97 阅读 · 1 评论