class BankAccount {
private static int amount=20000;
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().sleep((int)(Math.random()*300));
bs.despoit(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()
{
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);
}
}
實現線程同步的例子
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.