java高并发之悲观锁和乐观锁的简单理解

这篇文章只是一个新人简单的认识。

                 首先,我们常听到的就是synchronized,就是给当前监听的这个对象加锁,就像你去网吧上网,玩到一半,突然想去干点啥子,然后想回来后继续玩,那么你就会给电脑上一个锁,密码就你知道,这时候别人看到这空着的想来上,但是没有密码就只有等到你回来解锁玩完了后才能上了。(不要纠结为啥子就这一台机子,杠精我没办法)。

                 这种方法只是java代码中解决并发的一种。

                还有种是基于数据的防止高并发的方法,就是常听说的悲观锁和客观锁。其实悲观锁乐观锁我觉得只是一种说法。

                悲观锁,就是在sql中对数据进行加锁,具体是对单条数据还是对整张表做操作看情况而定。悲观锁有个条件就是在事务中才有用,当前使用者对数据进行加锁执行操作,其他使用者这时候对数据执行操作就会失败,只有在当前使用者使用后才能再使用了,这种方法虽然有效,但是也是视情况而定,如果是金融行业执行操作,岂不是等死人。

 

               乐观锁,就是没有悲观锁的单人操作了,也就是可以多人对数据执行操作,但是,这个数据我会有一个标签记录,每次被操作一次就会在记录上修改一次,就像版本号样,原本A表的版本为1,我要对A表执行操作,拿到的A表示1版本的,同时你也要对A表执行操作拿到的A表也是版本1的,这时候你先对A表操作完,版本记录为2。我再提交A表操作,版本记录为2,这时发现我的版本记录和你的版本记录一样了,那么我的操作就视为无效。这就避免了长时间等待数据操作,也避免了数据的混乱。需注意:这种操作易出现脏读现象。视情况在代码里面辨别防止。

 

     

 我们一步一步做大做强

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值