クラスの各インスタンスに、そのクラスのメソッドの独自のコピーがあるかどうかを知りたいですか?インスタンスのメソッドとインスタンス変数のスレッドセーフ
は、私は次のクラスMyClass
を持っている、としましょう:各ユーザーを知ってい
MyClass instanceOfUser1 = new MyClass();
MyClass instanceOfUser2 = new MyClass();
彼のスレッドのコピーを持っている:2貴様のユーザーが同じようMyClass
のインスタンスを作成している場合
public MyClass {
private String s1;
private String s2;
private String method1(String s1){
...
}
private String method2(String s2){
...
}
}
MyClass
のメソッド?そうであれば、インスタンスメソッドだけがそれらを操作する限り、インスタンス変数はスレッドセーフです。
私はよくインスタンス変数がスレッドセーフではないので、この質問をしています。なぜ各ユーザーがnew
オペレーターに電話をかけてインスタンスを取得するのか、そのようにすべき理由はわかりません。
スレッドごとに異なるメソッドを持つ 'MyClass'のインスタンスまたは' MyClass'のインスタンスを持つ各スレッドについて質問していますか? – Jeffrey
インスタンス変数は、本質的にスレッドセーフではありません。 2つのスレッドが同じオブジェクトへの参照を変更できる場合は、何らかの同期を実装する必要があります。 – Joel
あなたは本当に混乱しています。スレッドセーフは状態に関するものです。状態はフィールドであり、メソッドではありません。クラスのスレッドセーフティは、メソッドによってフィールドs1とs2がどのように使用されているかによってまったく異なります。彼らの体を持っていないので、答えが不可能になります。 –