高分悬赏JAVA的一道题!!大神往这看

设计多线程事先银行账户的存/取款过程。设计3个类:账户类Account、存款线程类Save、取款线程类Fetch(8分)。账户类Account记录储户名和金额,提供存款方... 设计多线程事先银行账户的存/取款过程。设计3个类:账户类Account、存款线程类Save、取款线程类Fetch(8分)。账户类Account记录储户名和金额,提供存款方法put()和取款方法get()(5分)。Save和Fetch类分别提供对指定账户的存/取款操作(5分)。定义测试类进行测试,要求保证存取款的正确执行(3分)。 展开
 我来答
notole
2015-06-17 · TA获得超过247个赞
知道小有建树答主
回答量:271
采纳率:45%
帮助的人:100万
展开全部
public class Account {

private String name;
private double money;
private byte[] LOCK = new byte[0];

public Account(String name) {
this(name, 0);
}

public Account(String name, double money) {
super();
this.name = name;
this.money = money;
}

public void put(double money){
synchronized(LOCK){
this.money +=money;
}
}

public double get(double money){
synchronized(LOCK){
if(this.money < money){
System.out.println("余额不足!");
return 0;
} else {
this.money -=money;
return money;
}
}
}

public String toString(){
return "[name="+name+",money="+money+"]";
}
}
public class Fetch implements Runnable {

private Account account;
private Random r = new Random();

public Fetch(Account a){
account = a;
}

@Override
public void run() {
if(account != null){
int i = 0;
while(true){
try {
TimeUnit.MILLISECONDS.sleep(r.nextInt(1000));
i = r.nextInt(1000);
System.out.println("Fetch get " + i);
account.get(i);
System.out.println(account);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

}
public class Save implements Runnable {

private Account account;
private Random r = new Random();

public Save(Account a){
account = a;
}

@Override
public void run() {
if(account != null){
int i = 0;
while(true){
try {
TimeUnit.MILLISECONDS.sleep(r.nextInt(1000));
i = r.nextInt(1000);
System.out.println("Save put " + i);
account.put(i);
System.out.println(account);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

}

public class Test {

public static void main(String[] args) {

Account a = new Account("1");
new Thread(new Save(a)).start();
new Thread(new Fetch(a)).start();

}

}
追问
大哥能不能把JAVA和class文件发我由箱     381932611   谢谢大哥!!
上海勤革
2024-10-18 广告
Java程序员在准备面试时,可以参考多个在线刷题平台来提升自己的编程能力和解题技巧。这些平台通常提供大量的算法题和编程挑战,帮助候选人更好地准备技术面试。虽然没有特定的网站名称,但这些平台通常涵盖了从基础数据结构到复杂算法的各种题目。使用这... 点击进入详情页
本回答由上海勤革提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式