lock与sychronized关键字
2024-09-01 16:29:43
1. lock与sychronized关键字的区别
(1) Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现,Lock是代码层面的实现。
(2)Lock可以选择性的获取锁,如果一段时间获取不到,可以放弃。synchronized不行,会一根筋一直获取下去。 借助Lock的这个特性,就能够规避死锁,synchronized必须通过谨慎和良好的设计,才能减少死锁的发生。
(3)synchronized在发生异常和同步块结束的时候,会自动释放锁。而Lock必须手动释放, 所以如果忘记了释放锁,一样会造成死锁(为了保证释放的执行,往往会把unlock() 放在finally中进行)。
2. trylock方法
(1)synchronized 是不占用到手不罢休的,会一直试图占用下去。
(2)与 synchronized 的钻牛角尖不一样,Lock接口还提供了一个trylock方法。trylock会在指定时间范围内试图占用,占成功了,就继续。 如果时间到了,还占用不成功,扭头就走。
3. 线程交互
(1)使用synchronized方式进行线程交互,用到的是同步对象的wait,notify和notifyAll方法
(2)Lock也提供了类似的解决办法,首先通过lock对象得到一个Condition对象,然后分别调用这个Condition对象的:await, signal,signalAll 方法
最新文章
- MonkeyTest简单实用介绍
- Android studio 多渠道打包
- [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文
- 升級 Centos 6.5 的 php 版本
- C#----Graphics中部分方法的使用和理解
- centos 7 /etc/rc.local 开机不执行的问题
- Spring源码学习(二)AOP
- C语言第4天循环,流程控制。
- redis模块
- 【原创】省市二级联动纯javascript
- java使用POI jar包读写xls文件
- sae后台管理端的js,daterangepicker使用
- java的注释
- MSA2312 enclosure 闪断后
- SLogViewer下载及使用说明
- poj 2955";Brackets";(区间DP)
- unity打aar包工具
- PHP+Mysql学习笔记
- Deeplab v3+的结构代码简要分析
- HanLP代码与词典分离方案与流程