什么是原子引用? 解决ABA 问题,引入原子引用! 对应的思想:乐观锁! 带版本号 的原子操作!每次对值进行修改时,都会对比版本号,判断这个值是否被修改过。 如果没有修改则对其进行修改,如果修改过了,那么就会导致修改不成功。 判断值是否有修改过 查看官方文档中,原子引用的类 可以设置带版本的原子操作 ...
分类:
其他好文 时间:
2020-06-02 11:03:42
阅读次数:
54
引用学习(狂神说) 什么是CAS? CAS:Compare and Swap,即比较再交换,直接对内存中的值进行的操作 jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronous同步锁的一种乐观锁。JDK 5之前Java语言是靠syn ...
分类:
其他好文 时间:
2020-06-02 00:04:06
阅读次数:
58
大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助。 最近一个读者“懒洋洋”跟我说,他准备了3个月,刚刚参加了字节跳动的视频面试第三面,嗯,挂了… 一面二面的时候他表现还不错,所以有点飘,结果第三面准备不足,多人面试直接懵逼… 让我们一起来看看 ...
分类:
其他好文 时间:
2020-06-01 15:30:15
阅读次数:
1613
1.大纲 Lock接口 锁的分类 乐观锁和悲观锁 可重入锁与非可重入锁 公平锁与非公平锁 共享锁与排它锁 自旋锁与阻塞锁 可中断锁 锁优化 一:Lock接口 1.锁 是一种工具,用于控制对共享资源的访问 Lock和synchronized,是常见的锁,都可以达到线程安全的目的 Lock最常见的实现类 ...
分类:
其他好文 时间:
2020-06-01 00:37:47
阅读次数:
79
在了解悲观锁和乐观锁之前,我们先了解一下什么是锁,为什么要用到锁? 技术来源于生活,锁不仅在程序中存在,在现实中我们也随处可见,例如我们上下班打卡的指纹锁,保险柜上的密码锁,以及我们我们登录的用户名和密码也是一种锁,生活中用到锁可以保护我们人身安全(指纹锁)、财产安全(保险柜密码锁)、信息安全(用户 ...
分类:
其他好文 时间:
2020-05-29 13:44:51
阅读次数:
58
乐观锁: 乐观锁的想法很乐观,对数据库进行操作前一般认为此次操作不会产生冲突,因此操作时并不进行锁操作,等到操作结束时才判断是否冲突。 实现方法: 对表的数据进行操作时,同时将数据表的版本字段取出,等到操作完毕进行提交时,将数据版本号与表内的数据版本号进行比较,如果相等,说明这段时间内没有别的事务对 ...
分类:
其他好文 时间:
2020-05-24 20:56:28
阅读次数:
52
关于线程安全一提到可能就是加锁,在面试中也是面试官百问不厌的考察点,往往能看出面试者的基本功和是否对线程安全有自己的思考。 那锁本身是怎么去实现的呢?又有哪些加锁的方式呢? 我今天就简单聊一下乐观锁和悲观锁,他们对应的实现 CAS ,Synchronized,ReentrantLock 正文一个12 ...
分类:
其他好文 时间:
2020-05-24 13:43:50
阅读次数:
224
浅谈数据库悲观锁和乐观锁 现在我们简单聊一下数据库中的悲观锁和乐观锁 悲观锁 悲观锁正如其名称,比较悲观。总会认为:每当修改数据时,会有其他线程也会同时修改该数据。所以针对这种情况悲观锁的做法是:读取数据之后就加锁(eg: select...for update),这样别的线程读取该数据的时候就需要 ...
分类:
数据库 时间:
2020-05-19 22:28:12
阅读次数:
73
用户态和内核态 cas compare and swapcompare and exchangeCAS(比较并交换)是CPU指令级的操作,只有一步原子操作,所以非常快。而且CAS避免了请求操作系统来裁定锁的问题,不用麻烦操作系统,直接在CPU内部就搞定了。 重量级锁(创建锁需要惊动操作系统————0 ...
分类:
其他好文 时间:
2020-05-18 00:53:16
阅读次数:
99
后面会按照下图,分批次对Mysql的锁和大家一起分享 image.png 前言 数据库的锁机制是并发控制的重要内容,是对程序控制数据一致性的补充,更细粒度的保障数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。下面主要针对我们常见的InnoDB和Myisam进行解析。 注:下文提到 ...
分类:
数据库 时间:
2020-05-12 09:48:56
阅读次数:
82