我正在阅读这本书Java concurrency in practice,当我读到 immutability 与线程安全之间的关系时,我试图深入了解。所以,我发现至少有一个用例,在Java中构造一个不可变类可以导致发布一个非正确构造的对象。
根据this链接,如果类的字段未被解析final
,则编译器可以重新排序需要完成的语句以构造对象。实际上,根据this链接,要构建一个对象,JVM需要执行这些非原子操作:
我的问题是:Scala怎么样?我知道Scala基于Java的并发模型,因此它基于相同的Java内存模型。例如,对于上述构造问题,case class
是否是线程安全的?
感谢所有人。