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

公平锁/非公平锁java

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

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

独享锁/共享锁并发

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

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

互斥锁/读写锁同步

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

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

乐观锁/悲观锁ant

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

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

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

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

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

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

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

码字不易,点个赞呗💗