在Java中哪些情况需要同步方法访问?
问题内容:
在什么情况下需要同步对实例成员的访问?我知道对类的静态成员的访问始终需要同步-因为它们在该类的所有对象实例之间共享。
我的问题是,如果不同步实例成员,什么时候会出现错误?
例如,如果我的课程是
public class MyClass {
private int instanceVar = 0;
public setInstanceVar()
{
instanceVar++;
}
public getInstanceVar()
{
return instanceVar;
}
}
在什么情况下(使用该类MyClass
),我 需要 使用以下方法: public synchronized setInstanceVar()
和
public synchronized getInstanceVar()
?
预先感谢您的回答。
问题答案:
这取决于您是否希望类是线程安全的。大多数类都不是线程安全的(为简单起见),在这种情况下,您不需要同步。如果需要它是线程安全的,则应同步访问 或
使变量可变。(它避免了其他线程获取“陈旧的”数据。)