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 道
全部评论

相关推荐

牛牛不会牛泪:可以先别急着租房,去青旅,或者订个近点的宾馆待几天。先看看要做的能不能学到东西,然后看文档完不完善,写的好不好,mentor对你咋样,公司氛围啥的。情况不对赶快跑路找下家
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务