synchronized锁重入

渔灯暗,客梦回,一声声滴人心碎
“可重入锁”的意思是,自己可以再次获取自己的内部锁,如果线程A获得了某个对象的锁,这个锁还没有被释放,当想再次获得锁的时候还是可以获得的.也就是说,在一个同步代码方法/块里还是可以获取本类的其他同步方法/块.
示例代码:

public class ThreadTest {
    public static void main(String[] args) {
        try{
            MyThread thread = new MyThread();
            thread.start();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class MyThread extends Thread{
    @Override
    public void run() {
        super.run();
        A a = new A();
        a.method1();
    }
}

class A {
    synchronized public void method1() {
        System.out.println("method1");
        method2();
    }
    synchronized public void method2() {
        System.out.println("method2");
        method3();
    }

    synchronized public void method3() {
        System.out.println("method3");
    }
}

这里的方法1,2,3都是同步,在1里面调用方法2,方法2里调用方法3.输出结果:

这里写图片描述
由此可以得出:
在同一个类中,同步的方法是可以调用其他同步方法的.而且父子类中这样也可以,即父子类中也存在可重入锁;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值