java 可重入锁的应用场景,有没有能说明的例子,我不太理解为什么要使用可重入锁。
1条回答 默认 最新
关注 java 的 synchronized 关键字其实就是支持可重入的。
假设 synchronized 不支持重入,简单举个例子吧,如下:
我们看到 Person 有个 say 方法,有 synchronized 修饰; 子类 XiaoMin 有个 dance 方法,也被 synchronized 修饰;
Test中main,实例化一个子类 xiaoMin ,调用它的 dance 方法。如果 synchronized 不支持重入:
我们看 进入 dance 方法,首先会获取一个锁, 这个锁 是加在 XiaoMIn这个类上的;然后 在 dance方法里 又调了 say这个方法,也有个 synchronized ,它获得的锁也是加在 XiaoMin这个类上的;
那 这个 say 方法就要 等待 dance 方法执行完 才 释放锁,而say 方法不执行完 ,dance方法就不会结束, 这就陷入了死循环了。所以 synchronized 支持可重入,就是为了解决这种场景的。
public class Test { public static void main(String[] args) { XiaoMin xiaoMin = new XiaoMin(); xiaoMin.dance(); } } public class Person { public synchronized void say() { System.out.println("say"); } } public class XiaoMin extends Person{ public synchronized void dance() { System.out.println("dance"); say(); } }
如有帮助,欢迎采纳哈!
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 Coze智能助手搭建过程中的问题请教
- ¥15 12864只亮屏 不显示汉字
- ¥20 三极管1000倍放大电路
- ¥15 vscode报错如何解决
- ¥15 前端vue CryptoJS Aes CBC加密后端java解密
- ¥15 python随机森林对两个excel表格读取,shap报错
- ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
- ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
- ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
- ¥15 VFP如何使用阿里TTS实现文字转语音?