```public class MyTest {
public static void main(String[] args)throws InterruptedException {
Account account =new Account();
account.setMoney(100);
Bank bank =new Bank(account);
// 三个人同时去取钱
new Thread(() -> {
bank.withdrawMoney(10);
}, "我").start();
new Thread(() -> {
bank.withdrawMoney(30);
}, "你").start();
new Thread(() -> {
bank.withdrawMoney(10);
}, "她").start();
Thread.currentThread().sleep(1000);
System.out.println("账户剩余钱:" + account.getMoney());
}
}
// 账户
class Bank {
private final Accountaccount;
public Bank(Account account) {
this.account = account;
}
public void withdrawMoney(double money) {
synchronized (account){
double restOfMoney =account.getMoney() - money;
if (restOfMoney <=0) {
System.out.println(Thread.currentThread().getName() +"取钱失败 账户余额不足");
return;
}
System.out.println(Thread.currentThread().getName() +"取走了" + money +" 账户剩余钱:" + restOfMoney);
account.setMoney(restOfMoney);
}
}
}
// 账户
class Account {
private double money;
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
```