锁的种类

锁的种类划分:


公平锁/非公平锁,线程获取锁是否有顺序


可重入锁,获得锁的线程可以重复加锁从某些程度上避免了死锁的产生


独享锁/共享锁,当线程获得锁时其他线程是否能操作锁住的资源区域。eg:Synchronizer和ReentrantLock就是独享锁,ReadWriteLock的读是共享锁,写是独享锁!


乐观锁/悲观锁,上锁--》临界区--》执行(悲观,认为每一次操作都会有其他线程来抢夺资源) 尝试获取资源--》进入临界区--》执行(思想跟悲观相反,典型的例子就是CAS自旋


分段锁,典型的JAVA实现类就是JDK1.7的ConcurrentHashMap中的Segment[]就是一种分段锁


偏向锁/轻量级锁/重量级锁:

偏向锁,线程1--》记录1--》进入临界区(可以反复进入无须获得锁,此时线程2要进入时则须重新记录)

轻量级锁,线程1--》进入临界区(此时线程2进入则须自旋)

重量级锁,我们熟知的lock、Synchronizer等


自旋锁,eg:循环CAS



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值