java - 需要帮助解决并发修改
问题描述
这是我的服务代码,它会引发并发修改:
public List<PriceTierMI> getMutablePriceTiers() {
if (mutablePriceList == null) {
mutablePriceList = new ArrayList<PriceTierMI>();
} else {
if (mutablePriceList.size() > 0) {
Collections.sort(mutablePriceList , tierComparator);
}
}
return new ArrayList<>(mutablePriceList);
}
public List<PriceTierII> getImmutablePriceTiers() {
return new ArrayList<>(getMutablePriceTiers());
}
**Exception:**
java.util.ConcurrentModificationException
at java.util.ArrayList.sort(ArrayList.java:1473)
at java.util.Collections.sort(Collections.java:186)
at ItemPriceTierSequence.getMutablePriceTiers(ItemPriceTierSequence.java:196)
at ItemPriceTierSequence.getImmutablePriceTiers(ItemPriceTierSequence.java:207)
通过初始调试,我发现它不必要地排序了 2 次。但是,在 getImmutablePriceTiers() 中删除排序后,我仍然收到并发修改异常。我不确定代码中还缺少什么?解决此问题的任何指示都会有所帮助。
解决方案
推荐阅读
- core-data - 表单中的 SwiftUI Picker 不显示来自 CoreData 的复选标记
- ios - Swift:将对象转换为 Dictionary 无法正常工作
- python - 如何根据句点或换行符出现的位置将文本拆分为段?
- android - Retrofit2 Android:检索嵌套数据(当前错误:预期 BEGIN_ARRAY 但在第 1 行第 2 列路径 $ 处为 BEGIN_OBJECT)
- qt - 将我自己的 QML 按钮插入 GridLayout
- sql - 从其他表中获取数据匹配
- javascript - 有没有办法通过 Cordova 访问 chrome/safari url 历史记录或当前 url?
- java - 在 FusionAuth 中使用授权代码授予请求响应访问令牌调用时未获得刷新令牌
- java - 基于 JerseyExtension 的 JUnit5 测试不保持请求之间的会话
- c# - 如何更改 TabbedPage 中的默认选定项?