首页 > 解决方案 > 需要帮助解决并发修改

问题描述

这是我的服务代码,它会引发并发修改:

    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() 中删除排序后,我仍然收到并发修改异常。我不确定代码中还缺少什么?解决此问题的任何指示都会有所帮助。

标签: javacollectionsconcurrentmodification

解决方案


推荐阅读