次のコードを検討してください。奇数が発生しないように、スレッドセーフなクラスにします。
class Test {
private int value = 0;
private final Object lock;
public void add() {
synchronized (lock) {
value++;
value++;
}
}
public int getValue() {
synchronized (lock) {
return value;
}
}
}
私は今、最終的であると宣言されているロックフィールドに疑問を持っていますが、これは問題になりますか?またはそれはスレッドセーフを壊しますか?
ロックフィールドがfinalであると宣言されていない場合、これはスレッドセーフクラスである必要があると思います。この結論が間違っている場合は、私を訂正してください、ありがとう。