美文网首页
脏读问题

脏读问题

作者: 好奇害死猫o | 来源:发表于2018-12-23 13:47 被阅读0次

对业务写方法加锁,对业务读方法不加锁会出现脏读的情况

import java.util.concurrent.TimeUnit;

public class Account {
    String name;
    double balance;
    
    public synchronized void set(String name, double balance) {
        this.name = name;
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        this.balance = balance;
    }
    
    public /*synchronized*/ double getBalance(String name) {
        return this.balance;
    }
    
    
    public static void main(String[] args) {
        Account a = new Account();
        new Thread(()->a.set("zhangsan", 100.0)).start();
        
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(a.getBalance("zhangsan"));
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        System.out.println(a.getBalance("zhangsan"));
    }
}

运行结果如下:

0.0
100.0

相关文章

  • 脏读问题

    对业务写方法加锁,对业务读方法不加锁会出现脏读的情况 运行结果如下:

  • MySQL Innodb 事务隔离级别

    Reference 事务并发的可能问题与其解决方案脏读、幻读、不可重复读和丢失更新数据库并发事务存在的问题(脏读、...

  • SQL 多个事务并发时可能遇到的问题

    Reference 事务并发的可能问题与其解决方案脏读、幻读、不可重复读和丢失更新数据库并发事务存在的问题(脏读、...

  • Spring事务级别

    事务级别涉及到到问题主要有脏读,不可重复读,幻读,这里分别描述一下,并对相应的事务级别进行整理。 脏读 :脏读就是...

  • 事务隔离级别

    Mysql锁(七)丢失更新,脏读,不可重复读,幻读 ****这些问题的出现的原因**** 之所以出现更新丢失,脏读...

  • mysql数据mvcc版本控制原理

    事务并发执行遇到的问题 脏读(未提交读) 不可重复读(已提交读) 幻读(读出新纪录) 事务隔离级别 隔离级别脏读不...

  • Mysql事务的隔离级别

    Read uncommitted - 读未提交(会出现脏读的问题) Read committed - 读提交 (会...

  • Spring 事务隔离级别

    出现问题:脏读 ,不可重复读,幻读 脏读 :读到了别的事务回滚前的脏数据,例如:事务B执行过程中修改了数据X,在未...

  • SQL标准是如何规定事务级别的?

    前言 通过上一篇张,我们了解到并发事务,带来的脏读、脏写、不可重复读和幻读几种问题。针对这系列问题,实际上SQL标...

  • 系统原理-MVCC

    在SQL标准中,RR是无法避免幻读问题的,但是InnoDB实现的RR避免了幻读问题。RR解决脏读、不可重复读、幻读...

网友评论

      本文标题:脏读问题

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