Java中有几种锁,java中的各种锁详细介绍
公平锁/非公平锁
公平锁意味着多个线程按照它们申请锁的顺序获取锁。
不公平锁指的是多线程获取锁的顺序,而不是申请锁的顺序。稍后申请的线程可能比先申请的线程具有获取锁的优先级,这可能会导致优先级反转或饥饿。
独享锁/共享锁
排他锁意味着锁一次只能被一个线程持有。
共享锁意味着锁可以被多个线程持有。
互斥锁/读写锁
上面说的排他锁/共享锁是一个广义的说法,互斥锁/读写锁是具体的实现。
互斥锁在Java中的具体实现是ReentrantLock,读写锁在Java中的具体实现是ReadWriteLock。
乐观锁/悲观锁
乐观锁悲观锁不是指特定类型的锁,而是指并发和同步的角度。
悲观锁认为同一数据的并发操作会被修改,即使没有修改,也会被认为修改。因此,对于相同数据的并发操作,悲观锁定采取锁定的形式。悲观地说,没有锁的并发操作肯定会出问题。
乐观锁认为相同数据的并发操作不会被修改。在更新数据时,数据会通过尝试更新和不断重新更新来更新。乐观一点,并发操作不加锁没什么问题。
从上面的描述可以看出,悲观锁适合写操作多的场景,乐观锁适合读操作多的场景。不锁会带来很多性能提升。
悲观锁在Java中的使用就是利用各种锁。
Java中乐观锁的使用是无锁编程,经常采用CAS算法。典型的例子是原子类,通过CAS spin更新原子操作。
推荐教程:java入门教程以上是java中几种常见锁的详细介绍。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。