早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一个JAVA的多线程问题新手求大神假设一个银行的ATM机,它可以允许用户存款也可以取款。现在一个账户上有存款200元,用户A和用户B都拥有在这个账户上存款和取款的权利。用户A将存入100

题目详情
一个JAVA的多线程问题 新手求大神
假设一个银行的ATM机,它可以允许用户存款也可以取款。现在一个账户上有存款200元,用户A和用户B都拥有在这个账户上存款和取款的权利。用户A将存入100元,而用户B将取出50元,那么最后账户的存款应是250元。实际操作过程如下:
(1) 先进行A的存款操作:
1)得到账户的存款数额200,耗时2s。
2)将账户数额增加100,耗时忽略不计
3)将新生成的账户结果300返回到ATM机的服务器上,耗时2s
(2) 再进行B的取款操作:
4)得到增加后账户存款数额300,耗时2s。
5)判断取款额是否小于账户余额,若是,则将账户数额减少50,否则抛出异常信息,耗时忽略不计。
6)将新生成的账户结果250返回到ATM机的服务器上,耗时2s。
请根据以上要求,将A的操作和B的操作分别用线程来表示,编写一个Java程序实现该功能。
▼优质解答
答案和解析
new Thread(new Runnable(){ void run(){
long start=system.currenttime();
Double Money=A.showM();//200
long end=system.currenttime();
do{
end=system.currenttime();
}while(2000==end-start)
A.addM(100);
}}).start();
new Thread(new Runnable(){ void run(){
long start=system.currenttime();
Double Money=B.showM();//300
long end=system.currenttime();
do{
end=system.currenttime();
}while(2000==end-start)
A.getM(50);
}}).start();