下面是示例代碼函數變量值在多線程中共享?
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