相关疑难解决方法(0)

Scala final vs val用于并发可见性

在Java中,当跨多个线程(通常)使用对象时,最好将字段设为final.例如,

public class ShareMe {
    private final MyObject obj;
    public ShareMe(MyObject obj) {
        this.obj = obj;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,obj的可见性将在多个线程中保持一致(假设obj具有所有最终字段),因为它是使用final关键字安全构造的.

在scala中,它不会出现val编译到最终引用,而是val是scala中的语义,阻止您重新分配变量(构造函数中的Scala最终变量).如果scala构造函数变量未定义为final,它们是否会遇到同样的问题(在actor中使用这些对象时)?

concurrency visibility scala final actor

28
推荐指数
1
解决办法
9869
查看次数

标签 统计

actor ×1

concurrency ×1

final ×1

scala ×1

visibility ×1