admin管理员组文章数量:1516870
同步锁和异步锁
没有异步锁,只有同步锁(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是拿不到锁的,进不去,也就不会出现上面的情况了。
有错误请指出,看到会改,有帮助的话点个赞啦谢谢
本文标签: 同步锁和异步锁
版权声明:本文标题:同步锁和异步锁 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1706641446a698800.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论