这里讲的是广义上的可重入锁,而并非仅仅JAVA下的ReentrantLock。
可重入锁指的是在一个线程中可以多次获取同一把锁,比如:
一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法,而无需重新获得锁;
此线程对同一个同步监视器重复加锁的过程.每个同步监视器对应的锁都有一个计数器,用来记录递归加锁的次数(每加锁一次计数器加一,每解锁一次计数器减一),即正向加锁多少次就要逆向解锁多少次(否则此同步监视器还是被锁定状态)
在JAVA环境下 ReentrantLock 和synchronized 都是可重入锁.
可重入锁最大的作用是避免死锁
引用:
https://www.zhihu.com/question/23284564