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

作者:用户 来源:互联网 浏览:398 次 时间:2016-06-15 14:15:36

java多线程 参数已经传入构造方法 进入run方法时参数却被改变 - 摘要: java多线程参数已经传入构造方法进入run方法时参数却被改变请教各位大神:我在for循环里面执行线程,遇到一个问题,代码如下:privatestaticfinalExecutorServiceexe

问题描述

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不被改变?

【云栖快讯】阿里云栖开发者沙龙(Java技术专场)火热来袭!快来报名参与吧!  详情请点击
云栖社区(yq.aliyun.com)为您免费提供java多线程 参数已经传入构造方法 进入run方法时参数却被改变相关信息,包括 java 多线程 传入参数,docker run 传入参数,java 多线程 run 参数,构造函数 传入对象,子类构造函数传入父类的信息 ,所有java多线程 参数已经传入构造方法 进入run方法时参数却被改变相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_99355,您可以点击java多线程 参数已经传入构造方法 进入run方法时参数却被改变-手机站访问。
阿里云总监课第五期重磅上线!
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航