重入锁的设计目的
比如調用demo方法獲得了當前的對象鎖,然后在這個方法中再去調用demo2,demo2中的存在同一個實例鎖,這個時候當前線程會因為無法獲得demo2的對象鎖而阻塞,就會產生死鎖。重入鎖的設計目的是避免線程的死鎖。
public class ReentrantDemo{ public synchronized void demo(){ System.out.println("begin:demo"); demo2(); } public void demo2(){ System.out.println("begin:demo1"); synchronized (this){ } } public static void main(String[] args) { ReentrantDemo rd=new ReentrantDemo(); new Thread(rd::demo).start(); } }?
總結
- 上一篇: ReentrantLock重入锁
- 下一篇: ReentrantLock 的实现原理