编写程序,创建一个Account类表示账户,初始余额2000元。定义一个线程类模拟从账户中取钱,规定每个线程每次只能取100元。编写程序,创建两个线程,从账户取钱,分析可能发生的冲突。
package Chapter_17;
class Bank{
private int balance = 2000;
public synchronized void deposit(int amount) {
balance = balance + amount;
}
public synchronized void withdraw(int amount) {
balance = balance - amount;
System.out.println(Thread.currentThread().getName()
+" 取出100元,当前余额为: "+getBalance()+" 元");
}
public synchronized int getBalance() {
return balance;
}
public synchronized void setBalance(int balance) {
this.balance = balance;
}
}
public class Account02 implements Runnable{
Bank bank;
public Account02(Bank bank){
this.bank=bank;
}
public void run() {
while(bank.getBalance()>100) {
bank.withdraw(100);
}
}
public static void main(String[] args) {
Bank bank=new Bank();
Account02 account02=new Account02(bank);
Thread thread1=new Thread(account02);
Thread thread2=new Thread(account02);
thread1.start();
thread2.start();
}
}