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