は、ここでは、マルチスレッド方法のdoSomething()を実行するコード例関数の値はマルチスレッドで共有されていますか?以下
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()メソッドには多くのオブジェクト参照があります。
私の質問は、どのスレッドがオブジェクト参照の状態を変更した場合、この変更は、他のスレッドに表示されますでしょうか?
私は、自身の状態を持っているスレッドを作るために何をする必要があるかもしそうなら。私はこれを、execute()で渡しながらクラスの新しいインスタンスを作成することで修正できることを知っています。私は、彼らが同じスレッドでかじゃないか、doSomeThing
への各呼び出しは、変数の独自のセットを取得します。このスタイル
クローンを使用しようとします。 ** ref1.Type ref = ref1.clone(); ** –
ref1、ref2などは、パラメータからその値を取得しますか? – Marcelo
はいこれはパラメータから値を取得しています – Madhu