Java中synchronize机制底层实现和优化策略是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1580个文字,预计阅读时间需要7分钟。
首先来说说synchronize和Lock的区别:两者都是锁,用于控制并发冲突,区别在于Lock是一个接口,提供了更丰富的功能。synchronize自动释放锁,而Lock需要手动释放。
首先来说下synchronize和Lock的区别:
两者都是锁,用来控制并发冲突,区别在于Lock是个接口,提供的功能更加丰富,除了这个外,他们还有如下区别:
- synchronize自动释放锁,而Lock必须手动释放,并且代码中出现异常会导致unlock代码不执行,所以Lock一般在Finally中释放,而synchronize释放锁是由JVM自动执行的。
- Lock有共享锁的概念,所以可以设置读写锁提高效率,synchronize不能。(两者都可重入)
- Lock可以让线程在获取锁的过程中响应中断,而synchronize不会,线程会一直等待下去。lock.lockInterruptibly()方法会优先响应中断,而不是像lock一样优先去获取锁。
- Lock锁的是代码块,synchronize还能锁方法和类。
本文共计1580个文字,预计阅读时间需要7分钟。
首先来说说synchronize和Lock的区别:两者都是锁,用于控制并发冲突,区别在于Lock是一个接口,提供了更丰富的功能。synchronize自动释放锁,而Lock需要手动释放。
首先来说下synchronize和Lock的区别:
两者都是锁,用来控制并发冲突,区别在于Lock是个接口,提供的功能更加丰富,除了这个外,他们还有如下区别:
- synchronize自动释放锁,而Lock必须手动释放,并且代码中出现异常会导致unlock代码不执行,所以Lock一般在Finally中释放,而synchronize释放锁是由JVM自动执行的。
- Lock有共享锁的概念,所以可以设置读写锁提高效率,synchronize不能。(两者都可重入)
- Lock可以让线程在获取锁的过程中响应中断,而synchronize不会,线程会一直等待下去。lock.lockInterruptibly()方法会优先响应中断,而不是像lock一样优先去获取锁。
- Lock锁的是代码块,synchronize还能锁方法和类。

