[quote=引用 9 楼 qq445422083 的回复:] [quote=引用 7 楼 bree06 的回复:] 你实在要使用全局的customResponseMap, 那在取resultMap的时候进行深拷贝也是可以的. 如果resultMap值不多的话就放在方法里new出来然后再put值, (这里put值如果是对象且从全局customResponseMap取的话也要考虑深拷贝).
你做个测试就知道了, resultMap = (Map<Object, Object>) customResponseMap.get(eventType);这个语句只要eventType相同那么都是同一个引用, 你改变了其中的值, 其它指向这个对象的引用也同样受影响.
[quote=引用 7 楼 bree06 的回复:] 你实在要使用全局的customResponseMap, 那在取resultMap的时候进行深拷贝也是可以的. 如果resultMap值不多的话就放在方法里new出来然后再put值, (这里put值如果是对象且从全局customResponseMap取的话也要考虑深拷贝).
你实在要使用全局的customResponseMap, 那在取resultMap的时候进行深拷贝也是可以的. 如果resultMap值不多的话就放在方法里new出来然后再put值, (这里put值如果是对象且从全局customResponseMap取的话也要考虑深拷贝).
customResponseMap是全局的, 你的resultMap是从这里取的, 而你又改变了resultMap里的值, 这样就会影响到所有线程.
看看不是使用了全局的变量, 在并发下全局变量未同步就会出这种问题. 一个一个访问没问题, 好几个人一起访问就数据混乱了.
67,513
社区成员
225,879
社区内容
加载中
试试用AI创作助手写篇文章吧