模拟线程不安全的银行账户类

public class Test_09 {
public static void main(String[] args) {
Account account = new Account(1000);
Thread t1 = new Thread(new AccountThread(account));
Thread t2 = new Thread(new AccountThread(account));
t1.start();
t2.start();
}
}

class AccountThread implements Runnable{
private Account account;

public AccountThread(Account account){
this.account = account;
}

@Override
public void run() {
this.account.withdraw(1000);
}
}

class Account{
private double balance;

public void withdraw(double money){
double before = this.balance;
double after = this.balance - money;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.setBalance(after);
System.out.println(Thread.currentThread().getName() + "取款成功,余额为" + this.getBalance());
}

@Override
public String toString() {
return "Account{" +
"balance=" + balance +
'}';
}

public double getBalance() {
return balance;
}

public void setBalance(double balance) {
this.balance = balance;
}

public Account() {
}

public Account(double balance) {
this.balance = balance;
}
}
posted @ 2020-08-09 21:48  javase-->  阅读(142)  评论(0)    收藏  举报