1、什么是线程安全问题
2、用程序模拟线程安全问题
代码说明:
- Account代表账户类
- DrawThread代表线程类
- ThreadTest运行线程类
Account类:
package ThreadSave;
public class Account {
private double money; //余额
private String cardId; //卡号
public Account() {
}
public Account(double money, String cardId) {
this.money = money;
this.cardId = cardId;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
//取钱操作
public void drawMoney(double money) {
//先搞清楚谁在取钱
String name = Thread.currentThread().getName();
//开始进入取钱逻辑
if (this.money>=money){
System.out.println(name+"来取钱"+money+"成功!");
this.money -= money;
System.out.println(name+"来取钱后余额为:"+ this.money);
}else {
System.out.println(name+"来取钱---余额不足");
}
}
}
DrawThread类:
package ThreadSave;
public class DrawThread extends Thread{
private Account acc;
public DrawThread(Account acc,