Lock 和 Synchronized

Lock锁:
  • JDK1.5后新增的功能,与采用 synchronized 相比,lcok 可以提供多种锁的方案,更加灵活。

注意:如果同步代码块有异常,要将 unlock() 写入 finally 语句块中。

  • ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的 并发性内存语义,但是添加了类似 锁投票定时锁等候可中断锁等候 的一些特性。

    此外,它还提供了在激烈争用情况下更佳的性能。

Lock 和 synchronized 的区别

  1. Lock 是显式锁(手动开启 和 关闭锁 ,别忘记关闭锁),synchronized 是隐式锁。
  2. Lock 只有代码块锁,synchronized 有代码块锁 和 方法锁。
  3. 使用 Lock 锁,JVM 将花费较少的时间来调度线程,性能更好,且具有更好的扩展性(提供更多的子类)。

优先使用顺序

Lock <== == 同步代码块 (已经进入了方法体,分配了相应资源) <== == 同步方法 (在方法体之外)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容