9.11. 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同

发布于 2023-05-06 12:42:56 字数 642 浏览 42 评论 0

主要相同点: Lock 能完成 synchronized 所实现的所有功能
主要不同点: Lock 有比 synchronized 更精确的线程语义和更好的性能。 synchronized 会自

动释放锁,而 Lock 一定要求程序员手工释放,并且必须在 finally 从句中释放。 Lock 还有更强大的功能,例如,它的 tryLock 方法可以非阻塞方式去拿锁

相同点:

  1. 二者均可以用来保证多线程访问共享资源的同步,避免数据的冲突和不一致性。
  2. 都是可重入锁,即同一个线程可以重复获取锁。
  3. 都支持阻塞和非阻塞的锁获取方式。

不同点:

  1. synchronized 是 Java 语言内置的关键字,而 Lock 是一个 Java 接口,需要通过实现类来获得锁对象。
  2. synchronized 是独占锁,只能有一个线程获得锁,其他线程必须等待释放锁后才能进入,而 Lock 可以是独占锁,也可以是共享锁,可以有多个线程同时获得。
  3. synchronized 在发生异常时会自动释放锁,而 Lock 必须手动释放锁,因此在使用 Lock 时需要注意异常处理。
  4. synchronized 可以作用于普通方法、静态方法和代码块,而 Lock 只能作用于代码块。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

失与倦"

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

懂王

文章 0 评论 0

清秋悲枫

文章 0 评论 0

niceone-tech

文章 0 评论 0

小伙你站住

文章 0 评论 0

刘涛

文章 0 评论 0

南街九尾狐

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文