Возможный дубликат:
Какова (скрытая) стоимость ленивого val? (Scala)
Scala позволяет определять ленивые значения
lazy val maybeUnusedValue = someCostlyInitialization
где someCostlyInitialization
оценивается только при первом использовании maybeUnusedValue
. То есть, он оценивается не более одного раза, и если maybeUnusedValue
никогда не используется, он также никогда не оценивается вообще.
Является ли это потокобезопасным? Каковы последствия этого? Если это должно быть потокобезопасным, он должен каким-то образом использовать какую-то синхронизацию/использование Java volatile. К сожалению, Scala спецификация языка ничего не говорит об этом.