synchronized 重入锁的概念

  在java'多线程中用Synchronized 可以获取一个对象的锁来保持代码的排队执行,也就是代码的同步执行,而 重入锁的概念是,一个线程获取了一个对象的锁,当再次需要获取这个对象的锁时,是可以获取到无需等待,称为重入锁,如果是另一个线程的话是要等待这个线程释放对锁才能获取。

  举例说明:

    

class Service {
    public sysnchronized void service1(){
        system.out.println(" service 1 ")
        sercive2();
    }
    public syschronized void service2(){
        system.out.println("service2")
    }

class MyThread extends Thread {
    @Override
    public void  run() {
        Service service =  new  Service();
        service.service1();
    }
}
public class Run {
    public static   void main(String[] args) {
        MyThread t =  new  MyThread();
        t.start();
    }
}

  因为service中的两个方法都同步了。在service1中调用service2 是要获取锁的,但是因为service1和service2 持有的是同一把锁。所以可以直接进入service2,不需等待锁释放,

这就是重入锁的概念。

转载于:https://www.cnblogs.com/jonrain0625/articles/9462453.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值