汇总java市面上所有的锁名词

简介: 汇总java市面上所有的锁名词

一、乐观锁/悲观锁
乐观锁:我们开发时,默认为乐观锁日常不会更改数据,偶尔更改,那么便会以读为主。 以读为主,那怎么控制同一条数据被重复更改,而且顺序更改呢。 那就有CAS(compare and swith)、这类做法的实现手段为,version、time、或之前拿过来的目标值和要更改数据时的目标值是否是一样。
悲观锁:我们开发时,默认为悲观锁会经常更改数据,为了性能更优,我们会对该代码片段进行上锁。例如我们日常用到的sychornized、ReentrantLock、redislock。

二、公平锁/非公平锁
公平锁就相当于现实中的排队,先来后到;非公平锁就是无秩序,谁抢到是谁的;在reentLock类中公平锁会判断自己是否是在表头,非公平锁则会在执行前判断自己是否能拿到锁。

三、无锁>>偏向锁>>轻量级锁>>重量级锁
synchorized为代表
无锁,自旋锁;
偏向锁,线程id记录到对象头中,假设这个线程后续经常访问这个锁;
轻量级锁,对象先建立一个Lock Record的空间,后续一直CAS进行更新;
重量级锁,线程阻塞被唤醒;

四、可重入锁/不可重入锁
判断锁中的线程是否是当前线程,是当前线程则不锁,从而实现可重入

五、mysql 记录锁、间隙锁、临键锁
记录锁,封锁该行的索引记录;
间隙锁,锁定一段范围内的索引记录;
临键锁,每个数据行上的非唯一索引列上都会存在一把临键锁,锁住左右开闭区间

六、redisson的锁
网上目前资料还没有、并非仔细研读源码。

PS:我们未来的技术知识应当分为,学术研究类型、生产类型、学术辅助生产。网上的知识一知半解,人云亦云。虽然写了这个博客,但心理慌得狠,因为缺乏理论验证环节。先一起学习共勉吧。

相关文章
|
6月前
|
缓存 前端开发 JavaScript
一篇文章助你搞懂java中的线程概念!纯干货,快收藏!
【8月更文挑战第11天】一篇文章助你搞懂java中的线程概念!纯干货,快收藏!
47 0
|
9月前
|
Java 编译器
【JAVA】我们常常谈到的方法是指什么?
【JAVA】我们常常谈到的方法是指什么?
101 0
|
算法 Java 调度
56. 你说你熟悉并发编程,那么你说说Java锁有哪些种类,以及区别
56. 你说你熟悉并发编程,那么你说说Java锁有哪些种类,以及区别
113 1
|
Java 数据库 数据中心
java必学,分布式事务一
java必学,分布式事务一
135 0
java必学,分布式事务一
|
SQL Oracle NoSQL
java必学分布式事务 二
java必学分布式事务 二
135 0
|
Java API 监控
Java 8新特性探究(十)StampedLock将是解决同步问题的新宠
本文将从synchronized、Lock到新增的StampedLock进行对比分析
1696 0
|
存储 安全 小程序
30道最常问的Java基础面试题
30道最常问的Java基础面试题
130 0
30道最常问的Java基础面试题
另类的“同步”-volatile关键字 | 带你学《Java语言高级特性》之十四
本节将为读者展示另一种貌似能解决同步问题的关键字-volatile,并结合实际代码为读者深刻讲解了这个关键字的相关机制,剖析了它和synchronized的不同之处。
另类的“同步”-volatile关键字 | 带你学《Java语言高级特性》之十四
|
6月前
|
Java 开发者
【Java基础面试十五】、 说一说你对多态的理解
这篇文章解释了多态性的概念:在Java中,子类对象可以赋给父类引用变量,运行时表现出子类的行为特征,从而允许同一个类型的变量在调用同一方法时展现出不同的行为,增强了程序的可扩展性和代码的简洁性。
【Java基础面试十五】、 说一说你对多态的理解

热门文章

最新文章