一、如果synchronzied关键字加到service类的方法中,出现商品超买的情况。
原因:
transactional事务这块也有线程同步
synchronzied也会有线程同步
事务的范围要比线程同步的范围大
synchronzied代码块结束后,事务可能没有结束,线程把锁释放了,但事务还没有结束,事务还没提交,此时下一个线程来了,来了之后,此时事务开始提交,然后下一个线程开始执行了,执行的时候,数据库也跟着提交了。
二、synchronized放在调用处(控制层)的代码块上,这样能避免商口超买的情况。
线程的执行一定要比事务的范围大,这样就能解决商品超买的问题。