サイザー専用JAVA演習場
■ このスレッドは過去ログ倉庫に格納されています
0891デフォルトの名無しさん
2007/01/06(土) 15:38:15public void main(String s[]) throws Exception{
Account acc=new Account();
Client c1=new Client(acc,"Alice",2000);Client c2=new Client(acc,"Bob",-1000);
c1.start();c2.start();
c1.join();c2.join();
}
}
class Account{
private int m;
public synchronized void add(int n){m+=n;}
public synchronized int read(){return m;}
public synchronized boolean isInbound(){return 0<=m && m<10000;}
}
class Client extends Thread{
private Account b_;
private String n_;
private int a_;
public Client(Account bank, String name, int add){b_=bank;n_=name;a_=add;}
public void run(){
try{
for(;;){
b_.add(a_);
System.out.println(n_+":"+b_.read());
if(!b_.isInbound()) break;
Thread.sleep((a_>0?(a_):(-a_))/2);
}
}catch(Exception e){ e.printStackTrace(); }
System.out.println(n_+":End");
}
}
■ このスレッドは過去ログ倉庫に格納されています