利用多线程怎么编写存款与取款的问题?
利用多线程怎么编写存款与取款的问题?
------解决方案--------------------此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主截止到2008-06-21 10:18:17的汇总数据:
注册日期:2008-5-12
上次登录:2008-6-21
发帖数:1                  发帖分:20                
结贴数:0                  结贴分:0                 
结贴率:0.00 %        结分率:0.00 %       
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
------解决方案--------------------N个用户就启N个线程   是这个意思不?
------解决方案--------------------一段模拟出纳的操作,你自己参考吧
http://www.java2000.net/viewthread.jsp?tid=5382
------解决方案--------------------class Account1{               //账户缓冲区
	private String name;
	private int value;
	void put(int i){        
		value=value+i;
	}
	int get(int i){
		if(value>i){
			value=value-i;
			}
		else{
			i=value;
			value=0;
			}
			return i;
			}
			int howmatch(){
				return value;
				}
}
class Save2 extends Thread{            //存款
	private Account1 a1;
	private int amount;
	public Save2(Account1 a1,int amount){
		this.a1=a1;
		this.amount=amount;
	}
	public void run(){
		synchronized(a1){
			int k=a1.howmatch();
			try{
				sleep(1);
			}
			catch(InterruptedException e){
				System.out.println(e);
			}
			a1.put(amount);
			System.out.println("现有"+k+",存入"+amount+",余额"+a1.howmatch());
		}
	}
	public static void main(String args[]){
		Account1 a1=new Account1();
		(new Save2(a1,100)).start();
		(new Save2(a1,200)).start();
		(new Save2(a1,500)).start();
	}
}
class Fetch2 extends Thread{                //取款
	private Account1 a1;
	private int amount;
	public Fetch2(Account1 a1,int amount){
		this.a1=a1;
		this.amount=amount;
	}
	public void  run(){
		synchronized(a1){
			int k=a1.howmatch();
			try{
				sleep(1);
			}
			catch(InterruptedException e){
				System.out.println(e);
			}
			System.out.println("现有"+k+",取走"+a1.get(amount)+"余额"+a1.howmatch());
			}
		}
}
//这是书上关于存取款的例子