jmu-Java-07多线程-同步访问 (10分)
jmu-Java-07多线程-同步访问 (10分)
现已有Account
类,拥有
属性:private int balance
方法:
相应的getter方法。
要求为该类编写:void deposit(int money)
//存钱,在余额的基础上加上moneyvoid withdraw(int money)
//取钱,在余额的基础上减去money
注意:
- 取钱时如果
balance<0
的时候,会抛出异常。在多线程情况下,如只有一个存钱的线程,但是有多个取钱的线程,很可能会抛出异常。 - 需要编写完整的deposit方法与withdraw的前半部分代码解决该问题。
裁判测试程序:
import java.util.Scanner;
//这里是已有的Account类前半部分的代码
/*这里是deposit代码*/
/*这里是withdraw代码的前半部分*/
if(balance<0) //这里是withdraw代码的后半部分。
throw new IllegalStateException(balance+"");
}
/*系统已有代码,无需关注*/
public void deposit(int money) {
synchronized(this) {
this.balance+=money;
}
}
public void withdraw(int money) {
synchronized(this) {
if(this.balance>=money) {
this.balance -= money;
}
}
作者:嗯呢嗯呢
来源链接:https://blog.csdn.net/ZZhangYajuan/article/details/106582583
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。