Java中有几种锁,java中的各种锁详细介绍

  Java中有几种锁,java中的各种锁详细介绍

  公平锁/非公平锁

  公平锁意味着多个线程按照它们申请锁的顺序获取锁。

  不公平锁指的是多线程获取锁的顺序,而不是申请锁的顺序。稍后申请的线程可能比先申请的线程具有获取锁的优先级,这可能会导致优先级反转或饥饿。

  独享锁/共享锁

  排他锁意味着锁一次只能被一个线程持有。

  共享锁意味着锁可以被多个线程持有。

  互斥锁/读写锁

  上面说的排他锁/共享锁是一个广义的说法,互斥锁/读写锁是具体的实现。

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

  乐观锁/悲观锁

  乐观锁悲观锁不是指特定类型的锁,而是指并发和同步的角度。

  悲观锁认为同一数据的并发操作会被修改,即使没有修改,也会被认为修改。因此,对于相同数据的并发操作,悲观锁定采取锁定的形式。悲观地说,没有锁的并发操作肯定会出问题。

  乐观锁认为相同数据的并发操作不会被修改。在更新数据时,数据会通过尝试更新和不断重新更新来更新。乐观一点,并发操作不加锁没什么问题。

  从上面的描述可以看出,悲观锁适合写操作多的场景,乐观锁适合读操作多的场景。不锁会带来很多性能提升。

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

  Java中乐观锁的使用是无锁编程,经常采用CAS算法。典型的例子是原子类,通过CAS spin更新原子操作。

  推荐教程:java入门教程以上是java中几种常见锁的详细介绍。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: