Lock提供了一个锁方法:lock(),去获得代码执行权限,又通过unLock()去释放代码执行权限,而Synchronized只有一个代码块:Synchronized {},不够灵活。
Lock还提供了一个同步非阻塞方法判断是否获得了代码执行权限:tryLock(),这个方法会返回布尔值来标志是否获得了锁;同时提供了一个带有锁超时参数的重载方法,tryLock(Long time,TImeUnit timeUnit)。所以比Synchronized更加灵活。
Lock能够保证线程按照先后顺序去获得锁,Synchronized不能保证。
本文对比了Lock与Synchronized在代码执行权限管理方面的差异。Lock提供了更灵活的lock()和unlock()方法,以及非阻塞性的tryLock()方法,支持获取锁的顺序控制。而Synchronized则仅提供代码块级别的锁定。

6369

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



