lock锁 synchronized 关键字 区别

总结自java.util.concurrent.locks 接口Lock源代码注释

lock 支持多个显式的监视器 Condition 。synchronized是隐式的。
lock也可以提供线程互斥。还可以提供内存共享,如ReadWriteLock
synchronized  对每个对象提供隐式锁。lock 锁块,并且多个锁需要顺序加锁,逆序解锁。并且是在同一个作用范围内加解锁。
synchronized 编程更容易,避免很多lock的编写错误。lock用于更复杂的环境。手递手,链锁。如锁住a,然后锁住b,然后释放a锁住c,释放b锁住...。lock允许在跨域加解锁。
lock需要手动解锁。并且解锁在try finally try catch中
lock提供了不阻塞式的请求锁方法,try lock 。可以被中断,可以超时。
lock提供和隐式监视器不同的功能,如顺序锁,不可重复使用,死锁检测。如果实现类实现了这些语义,那么实现类必须记录这些语义。
lock也是一个普通的类,可以用作synchronized 的目标。
别用lock类而是使用它的子类。
所有lock实现类必须强制内存同步 如java语言中规定的。
不成功的加锁和解锁操作或者可重复使用的加锁解锁操作不要求内存同步。
三种获取锁的形式(可中断,不可中断,定时)有不同的表现。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值