zoukankan      html  css  js  c++  java
  • 并发超卖情况的解决方案(有待更新)

    并发超卖情况的解决方案(有待更新)

    一、悲观锁

    加上synchronized

    错误示范,在方法名上直接加synchronized

    错误原因:Transactional开启了事务控制,这里会有一个线程同步,synchronized也会有一个线程同步,而事务的线程同步范围要更大。synchronized的代码块确实是能保证线程是排队走的,但是synchronized代码块结束之后,事务可能还没有结束,事务还没有提交,但锁已经释放了,这时候下一个线程来了,这时候事务再提交,数据就可能出现多提交的问题了

    解决方式1(不推荐):把Transactional给去掉,只使用synchronized保证线程同步

    解决方式2:在控制器调用处添加synchronized,这样它的线程同步范围是一定比Transactional要大的

    总结:不推荐使用悲观锁,因为会让线程排队,容易造成线程阻塞,速度较慢

    二、乐观锁

    说明:使用乐观锁解决商品的超卖问题,实际上是把主要防止超卖问题交给数据库解决利用数据库中定义的version字段以及数据库中的事务实现在并发情况下商品的并发超卖问题

    • 大致理解

    • mapper

    • service

  • 相关阅读:
    洛谷P3376 【模板】网络最大流
    bzoj 4598: [Sdoi2016]模式字符串
    JAVA类(下)
    2019DDCTF部分Writeup
    Atom配置(VIM党) · iuunhao
    Tips
    rsync auth failed on module xxx
    基于mykernel完成时间片轮询多道进程的简单内核
    机器学习技法笔记(2)-Linear SVM
    css之制作三角形
  • 原文地址:https://www.cnblogs.com/ximensama/p/15038539.html
Copyright © 2011-2022 走看看