需求说明
– 张三和妻子各拥有一张银行卡和存折,可以对同一个银行账户迚
行存取款的操作,请使用多线程及同步方法模拟张三和妻子同时
取款的过程。要求使用同步方法和同步代码块两种方式实现
• 分析
– 定义Account类表示银行帐户
– 定义两个线程分别实现张三和妻子取款的操作
public class ThreadWork5 implements Runnable{
private int money = 1000;
@Override
public void run() {
for (int i = 0; i < 5; i++) {
synchronized (this){
money = money - 100;
if (money >= 0){
System.out.println(Thread.currentThread().getName() + "准备取款");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "完成取款");
}else{
System.out.println("余额不足" + Thread.currentThread().getName() + "的取款,余额为0");
}
}
}
}
public static void main(String[] args) {
ThreadWork5 t1 = new ThreadWork5();
new Thread(t1,"张三").start();
new Thread(t1,"张三的妻子").start();
}
}