您当前的位置:首页 > 计算机 > 编程开发 > Java

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

时间:12-14来源:作者:点击数:

主要相同点: 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 只能作用于代码块。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐