在多线程,可以通过Lock和synchronized这两种情况进行加锁。现总结一下它们的区别:
1、Lock是一个接口,而synchronized是java内置的一个关键字。
2、在发生异常时,Lock不能主动释放锁,所以需要我们在finally中通过unlock()去主动释放锁;而synchronized可以主动的释放锁,因此不会发生死锁。
3、Lock可以响应中断,而synchronized不能。
4、Lock在指定的截止时间内如果没有获取到锁,则返回;而synchronized没有时间的限制,会一直等待下去。
本文对比了Lock接口与synchronized关键字在多线程环境下的使用区别。Lock提供了更灵活的加锁方式,如中断响应、指定截止时间等,但需要显式解锁;synchronized则更加简单,能自动释放锁。
943

被折叠的 条评论
为什么被折叠?



