Я пытаюсь понять, как работают блокировки с использованием ключевых слов синхронизации в 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 частным и определить геттер/сеттер с модификатором синхронизации, чтобы убедиться, что это значение не рискует попасть в состояние гонки?