可能是重复问题:
什么是lazy val的(隐藏)成本? (Scala)
Scala允许定义lazy值
lazy val maybeUnusedValue = someCostlyInitialization
其中someCostlyInitialization
仅在第一次使用maybeUnusedValue
时进行评估。也就是说,它最多只会被评估一次,如果maybeUnusedValue
从未被使用,则根本不会进行评估。
这是否安全用于多线程?这对性能有何影响? 为了使其线程安全,必须使用某种同步方法/以某种方式使用Java volatile。不幸的是,Scala语言规范对此没有任何说明。