什么是可重入锁(ReentrantLock)?为什么要有可重入锁?如何使用可重入锁?

synchronized和 ReentrantLock都是可重入锁,重入锁的定义就是你得到了当前对象的锁后可以在锁中再次进入带有锁的方法。

为什么要使用重入锁
因为可以避免死锁。

那么如何使用呢

版本一

public class ReentrantDemo {
   


    public static void main(String[] args) {
   


        House house = new House();
        new Thread(() -> {
   
            house.ownHouse();
        }, "李四").start();


        new Thread(() -> {
   
            house.ownHouse();
        }, "张三").start();
    }


}


class House {
   


    /**
     * 你开了家里的大门进入了家里
     */
    public synchronized void ownHouse() {
   


        System.out.println(Thread.currentThread().getName() + "进入了自己的家里");
        balcony();
        

你可能感兴趣的:(java,后端)