13 乐观锁和悲观锁

vvEcho 2025-03-01 15:54:32
Categories: Tags:

Java中提供的synchronized,ReentrantLock,ReentrantReadWriteLock都是悲观锁。

Java中提供的CAS操作,就是乐观锁的一种实现。

悲观锁

获取不到锁资源时,会将当前线程挂起(进入BLOCKED、WAITING),线程挂起会涉及到用户态和内核态的切换,而这种切换是比较消耗资源的。
用户态:JVM可以自行执行的指令,不需要借助操作系统执行。
内核态:JVM不可以自行执行,需要操作系统才可以执行。

乐观锁

获取不到锁资源,可以再次让CPU调度,重新尝试获取锁资源。
Atomic原子性类中,就是基于CAS乐观锁实现的