日期:2014-05-20  浏览次数:20733 次

利用多线程怎么编写存款与取款的问题?
利用多线程怎么编写存款与取款的问题?

------解决方案--------------------
此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主截止到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());
}
}
}
//这是书上关于存取款的例子