如果我的几个可变属性会被多个线程处理,我知道它们应该同步。Java。如何正确同步getter和setter?
class Doggie {
private String name;
private int age;
public void setName(String name) { this.name = name; }
public String getName() { return this.name; }
public void setAge(int age) { this.age = age; }
public int getAge() { return this.age; }
}
问题:
- 是不是
return
和分配原子操作在Java中? - 由于属性可能不一定是相互关联的,因此与同一个锁同步并不总是有意义的。如何组织锁定结构?
- 使用内部锁或私有对象锁模式更好吗?
同步会在这里实现什么?即使你可以保证一个线程在它存在的时候拥有了setName(),当它退出时,也没有什么说在第一个线程调用getName()之前另一个线程不能立即做另一个setName()。在任何时候,你永远不会百分之百地确定这个州。 – 2010-06-19 15:33:19