package com.eds.newRetail.common;
/**
- 面试题:模拟银行账户
- 对业务写方法加锁
- 对业务读方法不加锁
- 这样行不行?
- 会造成脏读
- 看业务逻辑是否允许加锁 允许脏读,如果只是读一下,不处理相关业务逻辑,就可以不加锁,加锁之后要考虑到
- 加锁后效率非常低
*/
public class T {
private int money = 0;
public synchronized void setMoney(int money) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“修改金额完成。。。。”);
this.money += money;
}
public /synchronized/ int getMoney() {
System.out.println(“进入查询金额。。。”);
return this.money;
}
public static void main(String[] args) {
T t = new T();
// a用户进入修改
new Thread(new Runnable() {
@Override
public void run() {
t.setMoney(10);
}
}).start();
//--b用户进入
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("金额:"+t.getMoney());
}
}).start();
}
}