package com.daidai;
public class Account {
private String CardId;
private double money;
public String getCardId() {
return CardId;
}
public void setCardId(String cardId) {
CardId = cardId;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public Account() {
}
public Account(String cardId, double money) {
CardId = cardId;
this.money = money;
}
//去掉 synchronized 测试
public synchronized void drawMoney(double money) {
String name = Thread.currentThread().getName();
if (getMoney() >= money) {
System.out.println(name + "取走 " + money + " 元。");
this.money -= money;
System.out.println(name + "取完,余额:" + this.money);
} else {
System.out.println(name + "来取钱,余额不足!");
}
}
//测试
public static void main(String[] args) {
Account account = new Account("10001000000100100", 100);
Thread t1 = new DrawThread("小A", account);
Thread t2 = new DrawThread("大A", account);
t1.start();
t2.start();
}
}
class DrawThread extends Thread {
private Account account;
public DrawThread(String name, Account account) {
super(name);
this.account = account;
}
@Override
public void run() {
account.drawMoney(100);
}
}
Java 基础之多线程,银行取钱案例
于 2022-07-09 10:41:48 首次发布