(022)FastJson 序列化导致的 java.util.ConcurrentModificationException

文章目录

  • 问题
  • 解决

问题

  1. 在应用启动的时候,程序出现异常。存储类的部分字段如下:
  2. 每分钟进行检测:
  3. 出现了:

解决

  1. ConcurrentHashMap 是线程安全,这个问题,是因为 SiegeWarRoomCache 通过 FastJson 存储在 redis中,在启动的时候加载。虽然字段做了
    privateSet<Long>roomActors=newConcurrentHashSet<>();
    的处理,但是在 FastJson 发序列化的时候,该字段的值被覆盖
    publicSet<Long>getRoomActors(){returnroomActors;}publicvoidsetRoomActors(Set<Long>roomActors){this.roomActors=roomActors;}
    正确的应该是:
    publicSet<Long>getRoomActors(){returnroomActors;}publicvoidsetRoomActors(Set<Long>roomActors){this.roomActors.clear();this.roomActors.addAll(roomActors);}