您好我正在尝试使用双对象,而不是类型来同步线程。这是一个家庭作业。
概述:此应用程序是银行系统的一个简单示例,它具有作为存款人运行的线程和作为取款人运行的线程。存款人添加 10 美元,取款人删除 10 美元,因此应用程序结束时应该有 10 个未更改的银行账户。
在每个类别(存款人和取款人)中,我都能够在帐户对象上使用块同步来实现目标。所以我的作业的家庭作业部分已经完成,我不需要帮助。
我开始思考,我觉得锁定整个 Account 对象太过分了。因为交易中唯一真正重要的部分是改变变量
balance
最初可变余额是双倍的。我的目标是将变量更改为 Double 对象,然后将同步块移动到 account 对象内部,并且仅围绕修改 balance 变量的代码部分。
当我将代码更改为 Double 时,没有错误,但我收到一条注释:
This element has no attached source and the Javadoc could not be found in the attached Javadoc
此外,代码不起作用,因为我的价值观最后都错了。
问题:
- 我的理论是否正确,我应该只能锁定 Balance 变量?
- 如何让我的代码识别 Double 的 Java.lang 代码?
谢谢
这是一些代码...
宣言:
private Double balance;
构造函数:
this.balance = new Double(balance);
锁定:
synchronized(balance){
balance = balance + amount;
}