lock和synchronized如何选择?
2024-08-31 15:37:44
1.lock是一个接口,而synchronized是java关键字,synchronized是内置的语言实现。
2.synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁,而lock在发生异常时,如果没有主动unlock释放锁,则很可能造成死锁。因此使用lock时需要在finally块中释放锁。
3.lock可以让等待锁的线程响应中断,而synchronized不行,使用synchronized时,等待的线程会一直等待下去,不能响应中断。
4.lock可以提高多个线程进行读操作的效率。
5.通过lock可以知道有没有成功获取锁,synchronized不可以。
总结:从性能上来说,如果竞争资源不激烈,两者的性能差不多,而竞争资源非常激烈时,此时lock的性能要远远优于synchronized,所以,在具体使用时候,要根据适当情况进行选择。
最新文章
- icomoon图标的使用
- 【Python实战】Pandas:让你像写SQL一样做数据分析(一)
- android 透明度
- 数对的个数(cogs610)
- 关于H5中自定义属性的设置和获取
- CP2102模块介绍(USB转uart)
- spring事物传播机制 事物隔离级别
- 每日必读(2) --Base64
- BZOJ 2878: [Noi2012]迷失游乐园( 树形dp )
- 计蒜客模拟赛D1T1 蒜头君打地鼠:矩阵旋转+二维前缀和
- 为什么使用正则test( )第一次是 true,第二次是false?
- RocketMQ知识整理与总结
- css溢出显示省略号
- 用 DocumentFormat.OpenXml 和Microsoft.Office.Interop.Word 写入或者读取word文件
- c#命名规范(转载)
- each遍历
- DDD简明入门之道 - 开篇
- U8 应付款管理 单据类型 分析
- net license tool, EasyLicense !
- [转帖]中国公有云2018H1市场占有率