jinhua1314 2014-06-11 09:55 采纳率: 0%
浏览 3425

java多线程 参数已经传入构造方法 进入run方法时参数却被改变

请教各位大神:我在for循环里面执行线程,遇到一个问题,代码如下:
private static final ExecutorService executors = Executors.newScheduledThreadPool(10);
......
for(...){
executors.execute(new PublishThread(map));
}
PublishThread实现了Runnable方法,它有一个私有成员变量map,在PublishThread有一个构造函数,接受了上面的map参数,并将它赋给私有成员变量map。调试的时候发现到构造函数里面时,map值与for循环里面传过来的值是匹配的,但是到run方法里面时,map里面的值却被改变。比如3次for循环传进的参数分别为:{classId=10295, class_ids=[10295, 10325, 10327]},{classId=10292, class_ids=[10292]},{classId=10293, class_ids=[10293]},但是3次run里面看到的值确是{classId=10295,, class_ids=[10293]},{classId=10292,, class_ids=[10293]},{classId=10293,, class_ids=[10293]},这已经不是顺序乱掉的问题(顺序乱本正常),而是变量里面乱了。请问这有可能是什么原因导致的呢?有什么措施可以让这个map不被改变?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 易语言把MYSQL数据库中的数据添加至组合框
    • ¥20 求数据集和代码#有偿答复
    • ¥15 关于下拉菜单选项关联的问题
    • ¥20 java-OJ-健康体检
    • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
    • ¥15 使用phpstudy在云服务器上搭建个人网站
    • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
    • ¥15 vue3+express部署到nginx
    • ¥20 搭建pt1000三线制高精度测温电路
    • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况