第四周作业-多线程编程
2014-03-25 09:16
344 查看
class BankAccount //定义银行账号类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 arg[])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); } }