Synchronized与Lock的区别?

1. Synchronized是Java的关键字,在jvm层面实现加锁和解锁。Lock是一个接口,在代码层面实现加锁解锁

2. Synchronized可以用在代码块、方法上。Lock只能写在代码里。

3. S在代码块执行完成或出现异常时自动释放锁,而L不会自动释放锁,需要在funally显式释放锁。

4. S会导致线程拿不到锁一直等待,L可以设置获取锁失败的超时时间。

5. S无法得知是否获取锁成功,L可以通过tryLock得知加锁是否成功。

6. S锁可重入、不可中断、非公平;L锁可重入,可中断,可公平/不公平,并可以细分读写锁以提高效率。

人嘛了
2022-03-16
在牛客打卡56天,今天学习:刷题 29 道
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务