下面是示例代码函数变量值在多线程中共享?
Class Abc {
void method1(){
ExecutorService threadPool = Executors.newFixedThreadPool(10);
for(int i=0;i<100;i++){
threadPool.execute(new Runnable() {
doSomeThing(Param);
});
}
threadPool.shutdown();
}
void doSomeThing(Param param){
Object ref1,ref2,ref3,ref4;
}
}
在这里,我们在多线程执行所述方法的DoSomething()。 doSomeThing()方法有许多对象引用。
我的问题是,如果有任何线程更改对象引用的状态,这种更改是否对其他线程可见?
如果是这样,我需要做的,使线程有它自己的状态。我知道我们可以通过在execute()中传递它来创建一个新的类实例来解决这个问题。我试图用这种方式解决问题
尝试使用克隆。 ** ref1.Type ref = ref1.clone(); ** –
做ref1,ref2等从参数中获取它们的值吗? – Marcelo
是的,它是从参数 – Madhu