/*********
*
*
name:实现线程同步列子
Administrator:伟
*
********/
class BankAccount { //定义银行账户类
private static int amount = 2000; //账户余额最初为2000
public void despoit (int m){ //定义存款方法
amount = amount +m;
System.out.println("小明存入["+ m +"]元");
}
public void withdraw(int m){ // 定义取款方法
amount = amount - m;
System.out.println("张新取走["+ m +"]元");
if(amount < 0)
System.out.println("***余额不足!***");
}
public int balance(){ //定义得到账户余额的方法
return amount;
}
}
class Customer extends Thread{
String name;
BankAccount bs; //定义一个具体账户对象
public Customer(BankAccount b ,String s){
name = s;
bs = b;
}
public synchronized static void cus (String name, BankAccount bs){
if(name.equals("小明")){ //判断用户是不是小明
try{
for(int i = 0; i < 6; i++){
Thread.currentThread();
Thread.sleep((int)(Math.random()*300));
bs.despoit(1000);
}
}
catch(InterruptedException e){}
}
else{
try{
for(int i = 0; i < 6; i++){
Thread.currentThread();
Thread.sleep((int)(Math.random()*300));
bs.withdraw(1000);
}
}
catch(InterruptedException e){}
}
}
public void run(){ //定义run方法
cus(name , bs);
}
}
public class AccountTest1{
public static void main(String args[]) throws InterruptedException{
BankAccount bs = new BankAccount();
Customer customer1 = new Customer(bs , "小明");
Customer customer2 = new Customer(bs , "张新");
Thread t1 = new Thread(customer1);
Thread t2 = new Thread(customer2);
t1.start();
t2.start();
Thread.currentThread();
Thread.sleep(500);
}
}