【发布时间】:2018-04-19 14:33:10
【问题描述】:
我在软件中发现了一个仅在压力测试下才会出现的错误。一个函数被大量调用并且如果调用同时或几乎同时具有不同的行为。
我做了一个例子来说明正在发生的事情:
public void doPayment(Acccount account) throws MyException {
if (isMoneyAvailable(account)) {
confirmPayment(account);
}else{
throw new MyException(myErrorCode);
}
}
如果此函数同时调用两次,当账户有钱只用于一次付款时,就会进行两次付款。
你有什么想法可以防止这种错误吗?
【问题讨论】:
-
了解 Java 中的并发和同步。
-
快速而肮脏的解决方案是在方法签名中添加
synchronized关键字。但是,是的,并发应该是任何半认真的 Java 程序员的基本知识
标签: java multithreading load-testing stress-testing