- 1
- 0
- 约1.66千字
- 约 2页
- 2026-06-02 发布于北京
- 举报
synchronized和ReentrantLock的区别
两者的共同点:
1.都是用来协调多线程对共享对象、变量的2.
都是可重入锁,同一线程可以多次获得同一个锁3.
都保证了可见性和互斥性
两者的不同点:
\1.ReentrantLock显式的获得、释放锁,synchronized隐式获得释放锁\2.ReentrantLock可响应中断、
可,synchronized是不可以响应中断的,为处理锁的用性提供了更高的灵活性\3.
ReentrantLock是API级别的,synchronized是JVM级别的
\4.ReentrantLock可以实现公平锁
\5.ReentrantLock通过Condition可以绑定多个条件\6.底层实现不同,synchronized是同步阻塞,使
用的是悲观并发策略,而lock是同步非阻塞,采用的是乐观并发策略\7.Lock是一个接口,而
synchronized是Java中的关键字,synchronized是内置的语言实现。
\8.synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发
生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在
finally
原创力文档

文档评论(0)