在 Akka Actor 上使用锁

Using locks on Akka Actors

我有一个像这样的 Actor(假设 receive 方法在其他地方被覆盖):

class MyClass extends Actor {     
  def method1() = { ... }

  def method2() = { ... }

  def method3() = {     
    this.synchronized {
      ....
      ....
    }
  }
}

如果我在我的 Actor 中定义了一个 final 字段,会发生什么:

private val lockType = new AnyRef

然后我可以使用这个锁来同步我的method3吗?会有什么区别?我的理解是,使用此引用锁定方法会使该引用在释放锁之前不可用。

在上述情况下,我使用了一个可以独立于 this 引用运行的锁,并且仅在对 method3 进行某些操作时才锁定,而 this 引用仍可用于其他线程?

actor 内部不需要同步。 Actor 一次只会处理一条消息。