请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同

ReentrantLock 是 Lock 的实现类,是一个互斥的同步锁。
从功能角度,ReentrantLock 比 Synchronized 的同步操作更精细(因为可以像普通对象一样使用),甚至实现 Synchronized 没有的高级功能,如:
 等待可中断:当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,对处理执行时间非常长的同步块很有用。
 带超时的获取锁尝试:在指定的时间范围内获取锁,如果时间到了仍然无法获取则返回。  可以判断是否有线程在排队等待获取锁。
 可以响应中断请求:与 Synchronized 不同,当获取到锁的线程被中断时,能够响应中断,中断异常将会被抛出,同时锁会被释放。
 可以实现公平锁。
从锁释放角度,Synchronized 在 JVM 层面上实现的,不但可以通过一些监控工具监控 Synchronized 的锁定,而且在代码执行出现异常时,JVM 会自动释放锁定;但是使用 Lock 则不行,Lock 是通过代码实现的,要保证锁定一定会被释放,就必须将 unLock() 放到

请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同最先出现在Python成神之路

版权声明:
作者:congcong
链接:https://www.techfm.club/p/14668.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>