performance - Scala 惰性值 : performance penalty? 线程安全?

标签 performance scala lazy-initialization

这个问题在这里已经有了答案:




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/

相关文章:

Javascript - 返回值或使用回调函数

java - 使用 Jackson 序列化 Collection 时出现 LazyInitializationException

java - 单个数据存储的多个消息监听器。高效设计

c# - ANTLR 还是正则表达式?

scala - 运行 "clean"所有依赖的 SBT 子项目

scala - 如何在scala程序中的vs代码中设置断点

scala - 为什么我的正常递归和尾递归示例之间存在舍入差异?

c++ - 线程安全类的有序静态初始化

Grails 在 SecurityFilters 中使用 Spring Security

java - 为什么 HashSet 在大 N 时性能不好?