synchronized的相关面试题


🔎如何理解乐观锁和悲观锁的,具体怎么实现

🌸如何理解悲观锁与乐观锁

乐观锁🔒
预测接下来锁🔒冲突的概率不大
并不会真的加锁,只在数据进行提交修改的时候去对数据进行冲突检测

悲观锁🔒
预测接下来锁🔒冲突的概率较大
悲观锁总是假设最坏的情况,每次去拿数据时都认为别人会修改,所以每次拿数据时都进行加锁

🌸具体实现

乐观锁🔒
引入一个版本号,借助版本号识别当前的数据访问是否冲突

悲观锁🔒
先加锁,获取到锁再操作数据,获取不到锁就等待


🔎介绍读写锁

读写锁与互斥锁不同

读写锁可以
(1)给读加锁 (2)给写加锁 (3)解锁

其中
(1)读锁与读锁之间,不会产生锁竞争(不会影响程序速度)
(2)写锁与写锁之间,会产生锁竞争(会降低程序速度,但保证数据准确性)
(3)读锁与写锁之间,会产生锁竞争(会降低程序速度,但保证数据准确性)

主要应用于频繁读不频繁写的情况


🔎什么是自旋锁,为什么要使用自旋锁策略呢,缺点是什么

如果获取锁失败,就会一直重复加锁,不去做其他的事情(忙等),直到加锁成功
一旦锁被释放,可以第一时间拿到锁

一般为了能够更快的拿到锁,会选择自旋锁

优点
可以更快的拿到锁

缺点
会进行忙等(无法做其他的事情),浪费cpu


🔎synchronized 是可重入锁么

可重入锁
一个线程针对一把锁连续加锁两次后不会产生死锁

可重入锁会在第一次加锁时标记一下,记录当前线程是锁的拥有者
当第二次加锁时发现当前线程是锁的拥有者就会加锁成功

🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值