我试图了解在 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;
现在我的问题是,如果我使用实例锁(this)创建一个锁块,这会阻止其他线程操纵财产钱吗?或者我是否需要将货币属性设为私有并使用 synchronize 修饰符定义 getter / setter 以确保该值不会冒着陷入竞争条件的风险?