必备知识点:乐观锁和悲观锁的区别

张开发
2026/5/4 4:09:38 15 分钟阅读
必备知识点:乐观锁和悲观锁的区别
本篇文章小编用提问于解答的形式给读者呈现最佳阅读、学习体验请问乐观锁和悲观锁的区别是什么为什么叫这个名字答乐观锁表示不加锁直接读取数据。就好像开发者乐观地以为读的过程中不会有写入。因为实际项目中读操作比写操作频繁很多所以大多数情况下我们可以选择乐观。但为了安全我们还需要在乐观读取后做一个检查保证数据正确。悲观锁表示读取时为了安全直接加锁就好像开发者悲观地认为这次读取不加锁一定是不安全的。CAS也是一种乐观锁对CAS有了解吗答CAS 表示 compare and swap也有人说是 compare and setcompare and exchange。CAS 操作包含三个操作数需要读写的内存位置V、预期值E和新值N。操作的逻辑是比较内存位置 V 中的当前值是否等于预期值 E。如果相等则将内存位置 V 的值更新为新值 N如果不相等则操作失败重新尝试。CAS 底层原理是什么答CAS 底层是通过硬件指令实现比较和交换操作。如 x86 架构下执行的是 cmpxchg 读作 compare and exchange指令但这个指令不是原子性的在多线程环境下还需要执行 lock 指令保证 CAS 操作的原子性。

更多文章