同步锁和异步锁

没有异步锁,只有同步锁(synchronized)

同步锁 

用来解决多线程安全问题(也叫高并发),大家都知道单线程和多线程吧,多线程效率比单线程高但有一定的安全问题

当多个线程同时修改同一个资源的时候就会出现线程安全问题。举个例子:

数据库有条数据order = 1代表库存仅剩1;购买商品的逻辑代码如下:

1,判断库存,小于1就返回错误   2,order减去1   3,返回商品给用户

现有AB俩个线程同时执行上面的代码(即是俩个用户同时购买商品)

如果执行顺序是A1,A2,A3然后B1,B2,B3,那么B在第一步的时候就会返回错误没库存了

但是多线程是同时执行的,就会有交叉执行的情况。A1,B1,B2,B3,A2,A3,俩个线程都判断有库存,然后都返回了商品给用户,这时候库存order会等于负1,这就出大事了。

同步锁的作用来了:

购买商品的代码一个锁,被锁住的代码叫同步代码块,有线程来执行的时候先看看有没有锁,有则拿走,然后才能进入,执行完代码块后释放锁

那么在多线程下,A获取锁进去后,在他出来前B是拿不到锁的,进不去,也就不会出现上面的情况了。

有错误请指出,看到会改,有帮助的话点个赞啦谢谢 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值