【高频面试】java高级进阶之锁?与CAS详解

一. 悲观锁与乐观锁
​ 乐观锁和悲观锁问题,是出现频率比较高的面试题。本文将由浅入深,逐步介绍它们的基本概念、实现方式(含实例)、适用场景,以及可能遇到的面试官追问,希望能够帮助你打动面试官。
​ 乐观锁和悲观锁是两种思想,主要是解决并发场景下的数据争夺的问题。

乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。
悲观锁:悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。

二、实现方式
​ 悲观锁的实现方式是加锁,加锁既可以是对代码块加锁(如Java的synchronized关键字),也可以是对数据加锁(如MySQL中的排它锁)。
​ 乐观锁的实现方式有两种:CAS机制和版本号机制。
1.CAS(Compare And Swap)
​ CAS的原理很简单,包含三个值

需要读写的内存位置(V)

【高频面试】java高级进阶之锁?与CAS详解最先出现在Python成神之路

版权声明:
作者:lichengxin
链接:https://www.techfm.club/p/28965.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>