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

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

    一、悲观锁

    加上synchronized

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

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

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

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

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

    二、乐观锁

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

    • 大致理解

    • mapper

    • service

  • 相关阅读:
    Java反射实现几种方式
    kettle之几个.bat初步介绍
    eclipse 启动项目时候报的错误
    转:kettle中调度kitchen.bat后面接参数,写定时更新任务
    hibernate4,manytomany
    hibernate4,onetomany
    Javascript系列之在HTML中使用JavaScript
    Javascript系列之js简介
    004 C++ 指针
    003 C++ 函数
  • 原文地址:https://www.cnblogs.com/ximensama/p/15038539.html
Copyright © 2011-2022 走看看