У меня есть вопрос о java multi-threading.Многопоточность ленивая инициализация
У меня есть класс, который имеет доступ к нескольким потокам.
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
@Bohemian вы правы –
Когда вы используете поле или переменную, обычно лучше ограничить область охвата только там, где это необходимо. В этом случае это может фактически решить вашу проблему. –