シングルトンパターンで質問があります。シングルトンパターンでは、次のように記述します
synchronized(ClassName.class){
// other code goes here
}
書く目的は何ClassName.class
ですか?
シングルトンパターンで質問があります。シングルトンパターンでは、次のように記述します
synchronized(ClassName.class){
// other code goes here
}
書く目的は何ClassName.class
ですか?
メンバー メソッド (非静的) では、使用するモニター (ロック) の 2 つの選択肢があります。「this」と「my class's single static lock」です。
オブジェクト インスタンスのロックを調整することが目的の場合は、" this "を使用します。
...
synchronized (this) {
// do critical code
}
また
public synchronized void doSomething() {
...
}
ただし、次のいずれかを含む安全な操作を行う場合:
静的メソッド
クラスの静的メンバー
次に、クラス全体のロックを取得することが重要です。静的ロックで同期するには 2 つの方法があります。
...
synchornized(ClassName.class) {
// do class wide critical code
}
また
public static synchronized void doSomeStaticThing() {
...
}
非常に重要なことですが、次の 2 つの方法は同じロックでは連携しません。
public synchronized void doMemberSomething() {
...
}
と
public static synchronized void doStaticSomething() {
...
}