我有一个关于java多线程的问题。多线程懒惰初始化
我有一个类可以访问多个线程。
Class A
{
private Object obj;
public Object returnObject()
{
if(condition)
return getObjectA();
else
return getObjectB();
}
public Object getObjectA()
{
obj = new Object()
obj.setProperty("prp1");
}
public Object getObjectB()
{
obj = new Object()
obj.setProperty("prp2");
}
}
当有多个线程访问getObj ..()。它是否会造成“obj”状态的问题?会有不希望的结果吗?
感谢SLaks和彼得,
我认为有以下也将解决线程安全问题:
public Object getObjectA()
{
Object obj = new Object()
obj.setProperty("prp1");
return obj;
}
@skaffman我认为这是一个实际的,有意义的条件的占位符 – Bohemian 2012-01-29 16:06:53
@Bohemian你是正确的 – 2012-01-29 16:11:48
当你使用一个字段或变量时,通常最好将范围限制在仅仅需要它的地方。在这种情况下,它实际上可以解决您的问题。 – 2012-01-29 20:32:40