これは自動的に外国語を生成できるかどうかをテストする記事です

2024/1/1

# 中国語のドキュメント

自動的に外国語を作成する難しさはまだいくつかありますね。

# ロック

# ロックの対象

  • ロックをかける前に、ロックと保護されるオブジェクトが同じレベルにあるかどうかを確認する必要があります
  • 静的フィールドはクラスに属し、クラスレベルのロックで保護できます。一方、非静的フィールドはクラスインスタンスに属し、インスタンスレベルのロックで保護できます。

つまり、非静的な wrong メソッドにロックをかけると、複数のスレッドが同じインスタンスの wrong メソッドを実行できないようにすることはできますが、異なるインスタンスの wrong メソッドが実行されないようにすることはできません。
一方、静的な counter は複数のインスタンス間で共有されるため、必然的にスレッドセーフの問題が発生します。したがって、クラス内に Object 型の静的フィールドを定義し、counter を操作する前にこのフィールドにロックをかけるべきです。

public class Data {

    @Getter
    private static int counter = 0;
    private static Object locker = new Object();

    public static int reset() {
        counter = 0;
        return counter;
    }

    public void right() {
        synchronized (locker) {
            counter++;
        }
    }

    public synchronized void wrong() {
        counter++;
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Last Updated: 2025/2/21 1:42:36