说一下乐观锁和悲观锁
时间: 2023-12-18 12:19:58 浏览: 295
MySQL中的悲观锁与乐观锁
乐观锁和悲观锁是两种用于解决并发场景下数据竞争问题的思想。乐观锁认为别人不会同时修改数据,在操作数据时不会上锁,而是在执行更新时判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。乐观锁适用于竞争不激烈的情况,因为悲观锁会锁住代码块或数据,其他线程无法同时访问,影响并发,而且加锁和释放锁都需要消耗额外的资源。
悲观锁则相对比较悲观,认为别人会同时修改数据。在操作数据时,悲观锁会直接将数据锁住,直到操作完成后才会释放锁,期间其他人无法修改数据。悲观锁的实现方式可以是对代码块加锁(如Java的synchronized关键字)或对数据加锁(如MySQL中的排它锁)。悲观锁适用于竞争激烈的情况,因为乐观锁在执行更新时可能会频繁失败,需要不断重试,浪费CPU资源。
阅读全文