Synchronized与Lock的区别?
1. Synchronized是Java的关键字,在jvm层面实现加锁和解锁。Lock是一个接口,在代码层面实现加锁解锁
2. Synchronized可以用在代码块、方法上。Lock只能写在代码里。
3. S在代码块执行完成或出现异常时自动释放锁,而L不会自动释放锁,需要在funally显式释放锁。
4. S会导致线程拿不到锁一直等待,L可以设置获取锁失败的超时时间。
5. S无法得知是否获取锁成功,L可以通过tryLock得知加锁是否成功。
6. S锁可重入、不可中断、非公平;L锁可重入,可中断,可公平/不公平,并可以细分读写锁以提高效率。
人嘛了
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 道
全部评论
相关推荐
点赞 评论 收藏
分享