这个问题在这里已经有了答案:
10年前关闭。
Possible Duplicate:
What's the (hidden) cost of lazy val? (Scala)
Scala 允许定义惰性值
lazy val maybeUnusedValue = someCostlyInitialization
哪里
someCostlyInitialization
仅在第一次使用 maybeUnusedValue
时评估.即最多评估一次,如果maybeUnusedValue
从来没有被使用过,它也从来没有被评估过。这个线程安全吗?这对性能有什么影响?
如果这是线程安全的,它必须以某种方式使用某种同步/使用 Java volatile。不幸的是Scala language specification对此只字未提。
最佳答案
使用双重检查锁定使其成为线程安全的 http://code-o-matic.blogspot.com/2009/05/double-checked-locking-idiom-sweet-in.html显然,这确实意味着访问惰性 val 比非惰性 val 慢。
关于performance - Scala 惰性值 : performance penalty? 线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095170/