问题描述
- 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不被改变?
时间: 2024-10-30 12:38:01