首页 > 编程语言 >关于并发编程一些问题与解决--事务回滚@Transactional

关于并发编程一些问题与解决--事务回滚@Transactional

时间:2024-03-22 21:44:37浏览次数:27  
标签:回滚 Like -- Transactional 事务 线程 animal

先贴一下代码吧

    @Transactional
    @Override
    public int upSunp(Integer a_id) {
        //查询数据库
        QueryWrapper<Animal> animalQueryWrapper = new QueryWrapper<>();
        animalQueryWrapper.eq("a_id", a_id);
        Animal animal_Like = animalMapper.selectOne(animalQueryWrapper);
        if (animal_Like != null) {
            int uped = animal_Like.getALike();
             animal_Like.setALike(uped + 1);
            animalMapper.updateById(animal_Like);

            return uped;
        }

        return 0;
    }

在这段代码中会遇到并发编程所遇到的问题,多个线程同时访问了共享资源,导致计算失误,比如在不加事务回滚的注解时,最后结果是+2,并不是+1,但事实只有一个用户发起了调用这个接口,并无其他用户主动开启另一个线程,但目前我也并没有找到另一个线程在哪里,是什么线程调用了这个方法或者+1行代码,但目前@Transactional可以解决这个问题,在标注@Transactional后,Spring执行这个 方法时会单独对这个线程(方法)开启一个数据库事务,其他线程无法进行干预这个共享资源,在这个方法执行结束后根据方法执行情况决定是提交事务还是回滚事务。这就是事务的原子性,各个原子間(数据库事务)相互隔离,按照我的理解就是,两人都有自己的苹果要放在同一个桌子上,在没有开启事务之前,两个线程可能会进行苹果的抢夺来放在桌子上,比如a已经放了一个苹果在桌上,此时b也要放,但是b没放自己的,拿了A的放了桌上,这就导致,一个线程原本是+1却导致了+2,开启事务之后,双方各放自己的,互不干扰,这就是原子性.大的事务里面包了小的事务,一个方法为大的事务,每一个线程访问为小的事务

标签:回滚,Like,--,Transactional,事务,线程,animal
From: https://www.cnblogs.com/zjDm/p/18090441

相关文章

  • Flex筛子布局
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>......
  • 项目立项管理
    目录1.概述2.项目建议与立项申请3.项目可行性研究3.1.内容3.2.初步可行性研究3.3.详细可行性研究4.项目评估与决策5.总结1.概述        本文的目录结构参考了《信息系统项目管理师教程(第四版)》。        项目立项管理是一项全面评估准备投资工程......
  • Android开发笔记[15]-设置页
    摘要使用MMKV数据框架实现设置页数据同步,设置页可以对其他页面进行设置;设置页数据通过MMKV框架持久化存储,重启APP不丢失.关键信息AndroidStudio:Iguana|2023.2.1Gradle:distributionUrl=https://services.gradle.org/distributions/gradle-8.4-bin.zipjvmTarget='1.......
  • 睡眠分期介绍
     睡眠可以分为两大类:快速眼动(REM)睡眠和非快速眼动(NREM)睡眠。整个睡眠周期大约90到110分钟,成人每晚会经历四到六个这样的周期。每个周期包括NREM睡眠的三个阶段和一个REM睡眠阶段,每个阶段有其特定的生理特征。###NREM睡眠####1.NREM第一阶段(N1)-**时间**:占总睡眠时间的5%左......
  • 不容错过的BUCK DCDC同步降压电路TPS563202
    1.TPS563202,优秀的17V转5V转3.3V降压DCDC电路参数优异,体积小,价格甚至比国产的还低,参数超过这个DCDC,价格低于这个DCDC的,请告知,国内器件厂家太多了,个人只了解一部分。12V转5V转3.3V转2.5V转1.8V都可以的。特点:标注3A,可输出3A电流,同步降压,无需外部肖特基输入电压范围:4.3V......
  • STM32G431RBT6按键模块04
    按键用法: 短按长按双击/三击按键电平变化:按下为0,弹起为1cubeMX中配置按键引脚并将其设置为上拉 设置定时器,时钟源,分频系数,重装载值 时钟源:InternalClock;Prescaler:79;CounterPeriod:9999; 这样的设置是10ms中断一次使能中断 interrupt.c&&inte......
  • 扫雷(蓝桥杯,acwing)
    题目描述:扫雷是一种计算机游戏,在 2020 世纪 80 年代开始流行,并且仍然包含在某些版本的MicrosoftWindows操作系统中。在这个问题中,你正在一个矩形网格上玩扫雷游戏。最初网格内的所有单元格都呈未打开状态。其中 M个不同的单元格中隐藏着 M 个地雷。其他单元格内......
  • # 在 SwiftUI 中使用 Metal Shader
    简介从iOS17/macOS14开始,SwiftUI支持使用Metalshader来实现一些特效。主要提供三个ViewModifier:colorEffect、distortionEffect和layerEffect。每个modifier的第一个参数是传入的Shader实例。此外,View实例还新增了一个visualEffectmodifier,用于暴露修饰内......
  • 全球变暖(蓝桥杯,acwing每日一题)
    题目描述:你有一张某海域 N×N像素的照片,”.”表示海洋、”#”表示陆地,如下所示:........##.....##........##...####....###........其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿,例如上图就有 22 座岛屿。由于全球变暖导致了海面上升,科学家预测未......
  • AcWing 99. 激光炸弹
    Problem:AcWing99.激光炸弹文章目录思路解题方法复杂度Code思路这是一个二维前缀和的问题。我们需要找到一个r*r的方格,使得这个方格内的所有点的权值和最大。我们可以先计算出每个点的前缀和,然后枚举每个可能的方格,计算出这个方格内的所有点的权值和,取最大值......