Java で同期キーワードを使用したロックがどのように機能するかを理解しようとしています。クラスがある場合(パブリック変数などを使用した悪い習慣などは忘れてください)
class Person
{
public int money;
public String name;
public void give_bonus()
{
synchronize(this)
{
money += 10;
name = "....";
}
}
}
// thread one
person.give_bonus();
// thread two
person.money += 50;
ここで私の質問は、インスタンス ロック (これ) を使用してロック ブロックを作成すると、他のスレッドがプロパティ money を操作できなくなるのでしょうか? または、money プロパティを非公開にし、同期修飾子を使用して getter / setter を定義して、この値が競合状態に陥る危険性がないことを確認する必要がありますか?