美文网首页
乐观锁机制

乐观锁机制

作者: 任笙_8b8c | 来源:发表于2021-05-11 09:21 被阅读0次
    乐观锁实验 无锁情况(无争抢锁)
       /**
         *
         * @author   Sir.tang
            乐观锁成功
         * @return
         * @exception
         * @date    2021/5/10 10:30
         */
        @Test
        void contextLoad8( ) {
    
            User user = userMapper.selectById("1");
            user.setName("乐观锁测试");
            user.setAge(99);
            System.out.println(user.getVersion()); //读取数据库的 Version 未跟更新前
            int i = userMapper.updateById(user);
    
            //断言预期值与实际值符合不
            Assert.assertEquals(1, i);
            User user1 = userMapper.selectById("1");
            System.out.println(user1.getVersion());
    
        }
    
    图片.png
    多个线程操作同时对一个对象

    多个线程操作同时对一个对象进行操作就会存在覆盖情况,如果没有乐观锁就会覆盖之前的值
    但是 加上乐观锁第一个对象跟新成功 版本号会发生变化 Version+1 每次跟新都会将Version作为条件一起跟新后面的就不会成功

        /**
         *
         * @author   Sir.tang
         多线程实现乐观锁  数据跟新失败
         * @return
         * @exception
         * @date    2021/5/10 10:30
         */
        @Test
        void contextLoad10( ) {
            User user = userMapper.selectById("1");
            user.setName("乐观锁测试");
            user.setAge(666);
            System.out.println(user.getVersion());
    
    
            User user1 = userMapper.selectById("1");
            user.setName("乐观锁测试2");
            user.setAge(99333);
    
            int i = userMapper.updateById(user1);
            int i1 = userMapper.updateById(user);
            System.out.println(i);
            System.out.println(i1);
    
        }
    
    
    图片.png

    相关文章

      网友评论

          本文标题:乐观锁机制

          本文链接:https://www.haomeiwen.com/subject/ondidltx.html