实现线程同步的第三种方式——Lock锁

前面学习了两种线程同步锁
    1)同步方法  同步监视器为当前对象this
    2)同步代码块synchronized(同步监视器/共享资源对象){    }

线程同步的第三种方法:Lock锁:对需要上锁的地方上锁
    1)JDK1.5后新增的功能
    2)与Synchronized相比,Lock可提供多种锁方案,更灵活
    3)Java.util.concurrent.locks 中的Lock是一个接口,它的实现类是一个java类,而不是作为语言的特性(关键字)来实现
        注意 :如果同步代码块有异常,要将unLock()放到finally中
        (开启:Lock    关闭:unLock)

    步骤:
        1)创建Lock对象
        2)调用lock()方法上锁
        3)  调用unlock()方法解锁

    Lock与synchronized的区别:
        1)Lock是显示锁(手动开启和关闭,需要关闭),synchronized是隐式锁
        2)Lock只有代码块锁,Synchronized有代码块锁和方法锁
        3)使用Lock锁,JVM将花费较少的时间来调度线程,性能更好,并且具有更好的扩展性(提供更多的子类)
        4) Lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。
              如果其他线程试图进入锁定的代码,则它 将一直等待(即被阻止),直到该对象被释放。
              lock()方法会 对 Lock实例对象进行加锁,因此所有对该对象调用 lock() 方法的线程都会被阻塞,直到该 Lock 对象的 unlock()方 法被调用。

写代码的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值