天天看點

第四周作業-多線程程式設計

class BankAccount //定義銀行賬戶類BankAccount
{
	private static  int amount = 2000;//賬戶的餘額最初為2000
	public void depoit (int m)//定義存款的方法
	{
		amount=amount+m;
		System.out.println("小明存入了"+m+"元");
	}
    public void withdraw(int m)//定義取款方法
    {
    
    	amount=amount-m;
    	System.out.println("張新取走"+m+"元");
    	if(amount<m)
    		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().sleep((int)(Math.random()*300));
				bs.depoit(1000);
			  }
			}
			catch(InterruptedException e)
			{}
		}
		else
		{
			try
			{
				for(int i=0;i<6;i++)
				{
					Thread.currentThread().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().sleep(500);
		
	}
}