可重入锁
可重入就是说某个线程已经获得某个锁,可以再次获取锁而不会出现死锁
实现原理
可重入锁通过内部维护一个线程标识,用来标识被哪一个线程占有,然后关联一个计数器。 已开始计数器为0,表示没有被占用。当一个线程获得锁时,计数器就会+1,这时其他线程来获取锁时,发现锁的持有者不是自己,就会进入阻塞状态。 当获得锁的线程再次获得锁时,发现锁的持有者是自己,计数器再次+1,当线程执行完毕释放锁时,计数器-1。(这里一个线程加几次锁,释放时就要释放几次)。当计数器为0时,线程标识就会被重置为null,这时被阻塞的线程就会被唤醒来竞争锁。

浙公网安备 33010602011771号