本文用于记录在学习AQS时,以ReentrantLock为切入点,深入源码分析ReentrantLock的加锁和解锁过程。 同步器AQS的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态(通常锁或者同步组件内部会实现一个Sync类(该类是一个静态内部类),然后让Sync类去继承 ...
分类:
其他好文 时间:
2020-11-06 02:46:59
阅读次数:
25
转自:https://woodenrobot.me/2020/03/09/redis-lock/ 业界常用解决方案 基于 MySql 等数据库的唯一索引 基于 ZooKeeper 临时有序节点 基于 Redis 的 NX EX 参数 本文主要讲解基于 Redis 实现的分布式锁 分布式锁的特点 互斥 ...
分类:
编程语言 时间:
2020-06-17 18:31:52
阅读次数:
56
一、将ReentrantLock和synchronized进行比较 1、synchronized和ReentrantLock都是独占锁,不同的是synchronized加锁和解锁过程自动进行;ReentrantLock需手动加锁解锁。 2、synchronized和ReentrantLock都可重入 ...
分类:
其他好文 时间:
2020-05-28 09:16:38
阅读次数:
65
上章节我们在懒汉式的单例模式上解决了多线程安全的问题,但解决问题的同时,新的问题也随之而来。 上节问题: 1、在静态方法(static)上添加关键字(synchronized同步锁),就是相当于在类上加锁,锁的范围大,损耗性能。 2、加锁、解锁过程消耗资源。 那么,我们该如何解决呢? 此种方法就是懒 ...
分类:
其他好文 时间:
2019-04-10 23:43:20
阅读次数:
286
偏向锁 偏向锁也是JDK 1.6中引入的一项锁优化,它的目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能。如果说轻量级锁是在无竞争的情况下使用CAS操作去消除同步使用的互斥量,那偏向锁就是在无竞争的情况下把整个同步都消除掉,连CAS操作都不做了。 当锁对象第一次被线程获取的时候,虚拟 ...
分类:
其他好文 时间:
2019-04-09 20:22:27
阅读次数:
132
同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。 "同"字从字面上容易理解为一起动作 其实不是,"同"字应是指协同、协助、互相配合。 如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B执行,再将结果给A;A再继续操作。 ...
分类:
其他好文 时间:
2019-03-03 09:35:22
阅读次数:
221
今天在进行数据清空时,不注意把表锁住了,记录一下解锁过程。 第一步执行 查出结果为 然后再执行 就可以解锁了 ...
分类:
数据库 时间:
2018-08-22 11:06:31
阅读次数:
180
硬件准备:CH340USB转TTL串口一个STM32F407板子一块设置从ISP启动软件准备:1,flash_loader_demo_v2.8.0.exe或者FlashLoaderDemonstrator2.8.0.msi都可以下载地址:(两个下载地址,优选第一个,第二个备选)http://download.csdn.net/download/keith_cheung/9355177http://do..
分类:
其他好文 时间:
2017-10-21 11:31:59
阅读次数:
3283
两种锁的加锁原理 互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。 自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。 两种锁的区别 互斥锁的起始原始开销要高于自旋锁,但是基本是一劳永逸,临界区 ...
分类:
其他好文 时间:
2017-02-14 13:58:29
阅读次数:
152
类继承关系: NonfairSync => Sync => AbstractQueuedSynchronizer 类NonfairSync final void lock() { if (compareAndSetState(0, 1)) setExclusiveOwnerThread(Thread ...
分类:
其他好文 时间:
2016-07-01 18:24:52
阅读次数:
193