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