java中有哪几种锁_java中常见的几种锁有哪些?

公平锁/非公平锁java

公平锁是指多个线程按照申请锁的顺序来获取锁。算法

非公平锁是指多个线程获取锁的顺序,并非按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,有可能,会形成优先级反转或者饥饿现象。编程

独享锁/共享锁并发

独享锁是指该锁一次只能被一个线程所持有。性能

共享锁是指该锁可被多个线程所持有。线程

互斥锁/读写锁同步

上面讲的独享锁/共享锁就是一种广义的说法,互斥锁/读写锁就是具体的实现。it

互斥锁在Java中的具体实现就是ReentrantLock,读写锁在Java中的具体实现就是ReadWriteLock。数据

乐观锁/悲观锁ant

乐观锁与悲观锁不是指具体的什么类型的锁,而是指看待并发同步的角度。

悲观锁认为对于同一个数据的并发操做,必定是会发生修改的,哪怕没有修改,也会认为修改。所以对于同一个数据的并发操做,悲观锁采起加锁的形式。悲观的认为,不加锁的并发操做必定会出问题。

乐观锁则认为对于同一个数据的并发操做,是不会发生修改的。在更新数据的时候,会采用尝试更新,不断从新的方式更新数据。乐观的认为,不加锁的并发操做是没有事情的。

从上面的描述咱们能够看出,悲观锁适合写操做很是多的场景,乐观锁适合读操做很是多的场景,不加锁会带来大量的性能提高。

悲观锁在Java中的使用,就是利用各类锁。

乐观锁在Java中的使用,是无锁编程,经常采用的是CAS算法,典型的例子就是原子类,经过CAS自旋实现原子操做的更新。

以上就是java中常见的几种锁有哪些的详细内容,但愿对你有所帮助。

码字不易,点个赞呗💗

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值