由于spring的aop,会在update方法之前开启事务,之后再加锁,当锁住的代码执行完成后,在提交事务,
因此synchronized代码块执行是在事务之内执行的,可以推断在代码块执行完时,事务还未提交,其他线程进入synchronized代码块后,读取的库存数据不是最新的。
解决上面的方法,比较简单的可以在update方法之前加上synchronized,在还没有开事务之间就加锁,那么就可以保证线程同步。
由于spring的aop,会在update方法之前开启事务,之后再加锁,当锁住的代码执行完成后,在提交事务,
因此synchronized代码块执行是在事务之内执行的,可以推断在代码块执行完时,事务还未提交,其他线程进入synchronized代码块后,读取的库存数据不是最新的。
解决上面的方法,比较简单的可以在update方法之前加上synchronized,在还没有开事务之间就加锁,那么就可以保证线程同步。