Scala中的不变性和线程安全性

时间:2015-08-20 08:22:52

标签: java scala thread-safety immutability

我正在阅读这本书Java concurrency in practice,当我读到 immutability 线程安全之间的关系时,我试图深入了解。所以,我发现至少有一个用例,在Java中构造一个不可变类可以导致发布一个非正确构造的对象。

根据this链接,如果类的字段未被解析final,则编译器可以重新排序需要完成的语句以构造对象。实际上,根据this链接,要构建一个对象,JVM需要执行这些非原子操作:

  1. 分配一些内存
  2. 创建新对象
  3. 使用默认值初始化其字段(布尔值为false,其他基元为0,对象为null)
  4. 运行构造函数,其中包括运行父构造函数
  5. 将引用分配给新构造的对象
  6. 我的问题是:Scala怎么样?我知道Scala基于Java的并发模型,因此它基于相同的Java内存模型。例如,对于上述构造问题,case class是否是线程安全的?

    感谢所有人。

0 个答案:

没有答案