两个人分别往同一个账户打钱,分三次,每次打1000;
本题由于共享了一个账户,因此会有线程安全问题,我采用了同步方法保证线程安全。
代码包括账户类,顾客类,银行系统类。代码如下:
/*
银行账户类型
*/
public class Account {
private int balance; //余额
public void setBalance(int money) {
this.balance = balance+money;
}
public int getBalance() {
return balance;
}
}
/*
顾客类型,采用多线程(继承方法),解决了安全问题(同步方法)
*/
public class Customer extends Thread {
private static Account acc;
private static int money=1000;
public Customer(Account acc) {
this.acc = acc;
}
@Override
public void run() {
show();
}
public synchronized static void show(){
int i=0;
while (i<3){
acc.setBalance(money);
System.out.println(Thread.currentThread().getName()+"存了1000元钱到acc账户中,余额为"+acc.getBalance()+"");
i++;
}
}
}
/*
银行系统
*/
public class Bank {
public static void main(String[] args) {
Account acc = new Account();
Customer c1 = new Customer(acc);
Customer c2 = new Customer(acc);
c1.setName("张三");
c2.setName("李四");
c1.start();
c2.start();
}
}
运行结果如下: