sychnized 和 Lock 什么区别?sychnize 什么情况情况是对象锁? 什么时候是全局锁为什么?
synchronized
和 Lock
的区别主要在于灵活性和功能:
灵活性 :
synchronized
:简单易用,语法上内置,自动释放锁,适用于快速锁定和解锁。可以是对象锁(实例方法或实例块)或类锁(静态方法)。Lock
:来自java.util.concurrent.locks
包,提供更丰富的功能,如尝试锁定、可中断的锁定和定时锁等,需要手动释放锁。
对象锁与全局锁 :
- 对象锁 :当使用
synchronized
修饰实例方法或对象块时,锁定的是当前对象的实例,只有该实例的线程能访问。 - 全局锁 :当
synchronized
修饰静态方法时,锁定的是类的Class
对象,所有线程共享,保证同一类的所有实例不能同时访问。
综上, synchronized
更适合简单场景, Lock
提供了更高的控制和灵活性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论