可重入锁

可重入就是说某个线程已经获得某个锁,可以再次获取锁而不会出现死锁

实现原理

可重入锁通过内部维护一个线程标识,用来标识被哪一个线程占有,然后关联一个计数器。

已开始计数器为0,表示没有被占用。当一个线程获得锁时,计数器就会+1,这时其他线程来获取锁时,发现锁的持有者不是自己,就会进入阻塞状态。

当获得锁的线程再次获得锁时,发现锁的持有者是自己,计数器再次+1,当线程执行完毕释放锁时,计数器-1。(这里一个线程加几次锁,释放时就要释放几次)。当计数器为0时,线程标识就会被重置为null,这时被阻塞的线程就会被唤醒来竞争锁。

 

posted @ 2022-12-29 01:37  Amireux-126  阅读(14)  评论(0)    收藏  举报