あなたが持っているとしましょう:
public class Foo {
public Bar b;
}
public class Bar {
public int x;
public int y;
}
そして、次のように呼び出します。
Foo f = new Foo();
....
synchronized(f) {
f.b.x = 3;
f.b.y = 5; //x and y must be adjacent primes at all times.
}
スレッドセーフが深い場合は?つまり、synchronized(f) は、fb が更新されている間、別のスレッド (それ自体のsynchronized(f) ブロック内) が fb を認識できないようにしますか? 代わりに synchronized(this) を使用するのはどうですか?