public class BankCard {
private double money;
private boolean flag =false;
public synchronized void addmoney( double money){
//判断有钱就等待
while (flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//存钱
this.money+=money;
System.out.println(Thread.currentThread().getName()+"存钱1000,余额:"+this.money);
flag=false;
notifyAll();
}
public synchronized void getmoney( double money){
//没钱就等存钱
while (!flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//取钱
this.money-=money;
System.out.println(Thread.currentThread().getName()+"取钱1000余额:"+this.money);
flag=true;
notifyAll();
}
}
public class Addmoney implements Runnable {
BankCard bc;
public Addmoney(BankCard bc) {
this.bc = bc;
}
@Override
public void run() {
for (int i = 0; i <10 ; i++) {
bc.addmoney(1000);
}
}
}
public class Getmoney implements Runnable {
BankCard bc;
public Getmoney(BankCard bc) {
this.bc = bc;
}
@Override
public void run() {
for (int i = 0; i <10 ; i++) {
bc.getmoney(1000);
}
}
}
ublic class Test {
public static void main(String[] args) {
BankCard b=new BankCard();
Addmoney a= new Addmoney(b);
Getmoney g=new Getmoney(b);
new Thread(a,"a").start();
new Thread(g,"b").start();
}
}