0

我是 scala 的新手,对它的一些用法有点困惑。scala中的“对象私有”字段(private [this])可以被认为是java中的ThreadLocal吗?(每个对象都有自己的副本)。

4

1 回答 1

0

你误会了。使用private[this],您只能从该对象(第 5.3 节)中访问该成员:

一种不同形式的资格是私有的[this]。用这个修饰符标记的成员 M 只能从定义它的对象内访问。

但是仍然有多个线程可以同时更改该对象,即因为它们仍然可以访问它。与ThreadLocal您将对象绑定到线程而不是对象一样。所以与前者不同的是,每个线程都有自己的对象,并且不能访问其他线程的本地分配对象。

简单地说,用 private[this]- 变量在第二个线程中与那个对象相关联。此外,从封装的角度来看,它们也非常不同。

于 2013-09-19T06:05:59.383 回答