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是拿不到锁的,进不去,也就不会出现上面的情况了。

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

本文标签: 同步锁和异步锁