在Scala中使用带有Hashtable的val可以解决并发问题吗?

del*_*ber 3 scala

我尽量避免代码中的变量,以便更容易地进行多线程处理.但是,有一行代码开始:

val positions: Hashtable[String, String] ...
Run Code Online (Sandbox Code Playgroud)

我想知道val是否使自动线程安全,或者是否需要担心更多细节?

agi*_*eel 6

通过在前面positionsval你把它一成不变的.通过"它"我的意思是参考Hashtable,而不是Hashtable它本身,因此通过"不可改变的"我的意思是,你不能指派另一Hashtablepositions.

所以它Hashtable本身可以随着时间而改变,但positions总会指向它.没有什么是自动线程安全的.