怎么理解Java悲观锁与乐观锁

介绍

本篇内容介绍了“怎么理解Java悲观锁与乐观锁”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1

锁(锁)

在介绍悲观锁和乐观锁之前,让我们看一下什么是锁。

锁,在我们生活中随处可见,我们的门上有锁,我们存钱的保险柜上有锁,是用来保护我们财产安全的。

程序中也有锁,当多个线程修改共享变量时,我们可以给修改操作上锁(syncronized)。

当多个用户修改表中同一数据时,我们可以给该行数据上锁(行锁),因此,锁其实是在并发下控制多个操作的顺序执行,以此来保证数据安全的变动。

并且,锁是一种保证数据安全的机制和手段,而并不是特定于某项技术的。悲观锁和乐观锁亦是如此。本篇介绍的悲观锁和乐观锁是基于数据库层面的。

怎么理解Java悲观锁与乐观锁”> <br/> </p> <p>从表中可以看到猪肉脯目前的数量只有1个了。在不加锁的情况下,如果A, B同时下单,就有可能导致超卖。</p> <p>悲观锁解决</p> <p>利用悲观锁的解决思路是,我们认为数据修改产生冲突的概率比较大,所以在更新之前,我们显示的对要修改的记录进行加锁,直到自己修改完再释放锁。加锁期间只有自己可以进行读写,其他事务只能读不能写。</p> <p>下单前先给猪肉脯这行数据(id=1)加上悲观锁(行锁)。此时这行数据只能一个来操作,也就是只有一个能买。B想买就必须一直等待。</p> <p>当买好后,B再想去买的时候会发现数量已经为0,那么B看到后就会放弃购买。</p> <p>那么如何给猪肉脯也就是id=1这条数据加上悲观锁锁呢?我们可以通过以下语句给id=1的这行数据加上悲观锁</p> <>之前,,select  num 得到goods  where  id =, 1, for 更新;</pre> <p类=敖樯堋?“怎么理解Java悲观锁与乐观锁”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章! </p><h2 class=怎么理解Java悲观锁与乐观锁