Lock 可重入锁

使用重入锁实现线程同步
ReentrantLock() : 创建一个ReentrantLock实例
lock() : 获得锁
unlock() : 释放锁

可重入锁
ReentrantLock是可以重入的锁,当一个线程获取锁时,还可以接着重复获取多次。
ReentrantLock需要手动加锁和解锁,且解锁的操作尽量要放在finally代码块中,保证线程正确释放锁。
ReentrantLock和synchronized都是可重入的。
synchronized因为可重入因此可以放在被递归执行的方法上,且不用担心线程最后能否正确释放锁;
ReentrantLock在重入时要却确保重复获取锁的次数必须和重复释放锁的次数一样,否则可能导致其他线程无法获得该锁。

猜你喜欢

转载自www.cnblogs.com/loveer/p/11410691.html