面试题:模拟银行账户

												## 面试题:模拟银行账户
package cn.qqjx.thread;

import java.util.concurrent.TimeUnit;

/*
 * 面试题:模拟银行账户
 * 对业务写方法加锁
 * 对业务读方法不加锁
 * 这样行不行?
 * @Auther  wangpeng
 * @Date 2021/1/8
 */

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

猜你喜欢

转载自blog.csdn.net/m0_52936310/article/details/112343889