我是靠谱客的博主 曾经芝麻,最近开发中收集的这篇文章主要介绍Spring Service中遍历map出现了ConcurrentModificationException,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
手底下小朋友在测试环境写了如下的代码一个spring的service里面进行排序,但是总有异常java.util.ConcurrentModificationException,这个异常很明显就是一个变量正在被遍历的时候被修改了,出现这个问题的主要原因是什么呢?? 出现在for循环中吗??
其实这个问题最主要的原因是:Spring的@Service默认是一个单例模式,所以每个请求访问的时候,访问的都是一个tagScoreMap,所以就会出现一个线程正在for循环遍历map另一个线程执行了初始化map的操作。
@Service
public class RankService {
private Map<String, Float> tagScoreMap;
public List<SearchGameInfo> rank(Map<RecallType, Set<SearchGameInfo>> searchGameInfoMap, RichQuery richQuery) {
tagScoreMap = new HashMap<>();
for (Map.Entry<String, Float> entry : tagScoreMap.entrySet()) {
Float value = entry.getValue();
float score = MathUtils.scoreNormalization(value, maxTagQualityScore, minTagQualityScore);
entry.setValue(score);
}
}
最后
以上就是曾经芝麻为你收集整理的Spring Service中遍历map出现了ConcurrentModificationException的全部内容,希望文章能够帮你解决Spring Service中遍历map出现了ConcurrentModificationException所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复