synchronized与lock锁简述

// synchronized与lock锁的区别
            synchronized 可以修饰类、方法、可以给代码块加锁,会自动释放锁
            lock 锁需要手动释放
                
// synchronized可重入锁的意思
            可重入性的意思就是在一个同步方法中调用另一个同步方法;现在有两个同步方法m1、m2  而且加的是同一把锁; 你在方法m1中调用m2,首先获得这把锁开始执行m1方法,当你要执行m2时也要获得这把锁,如果这时锁不可重入,那就进入了死锁的状态;  如果可重入,允许你申请,没毛病 问题不大这就叫可重入锁;    
//  synchronized释放锁的时机
            1、当前线程的同步方法、代码块执行结束的时候释放
            2、当前线程在同步方法、同步代码块中遇到break 、 return 终于该代码块或者方法的时候释放。
            3、出现未处理的error或者exception导致异常结束的时候释放
            4、程序执行了 同步对象 wait 方法 ,当前线程暂停,释放锁
  // synchronized也会造成死锁

线程死锁时不会释放锁,相当于循环获取对方的锁,线程认为是正常执行并没有异常,所以不会释放

记住产生死锁的四个必要条件
1.一个资源只允许一个进程访问
2.一个进程在访问一个资源的同时,还需要访问其他资源
3.需要被访问的资源正在被其他进程占用
4.占用着需要被访问的资源的其他进程也需要访问这个资源

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值