Scala Actors:是否有一个内置的方法来停止/中断一个actor ?



在Java中,我对线程有一个爱好,例如:

Thread thread = new Thread() {
  @Override
  public void run() {
    //use this while loop, I can stop/ interrupt the thread when I want
    while (!isInterrupted()) {
      //...
    }
  }
};
thread.start();

然后,当我想要停止/中断线程时:

thread.interrupt();

所以我的问题是:有没有一个内置的方式(字段/方法/函数…)在Scala,我可以停止/中断一个演员?

这是我的背景:我是Scala的新手,我真的在学习代码。我正在寻找演员和台词之间的最佳方式。从我的角度来看,我喜欢演员这个新方法。

p。S:对不起,我的英语不好……

正如另一个答案所指出的,actor模型是专门设计来将与actor的所有交互限制为消息传递和处理的。Scala/Akka通过强制您通过调用actorOf方法创建Actor来实现这一点。因为你没有对底层对象的引用,所以你不能直接调用它的方法。

所以,如果你想要一个可以被中断的Actor,只需要处理一些消息就可以了。

def receive = {
  case 'Interrupt => // handle interruption...
}

和客户端代码

a ! 'Interrupt

您可以向Actor发送一个毒丸来要求他终止(参见http://akka.io/docs/akka/1.2/intro/getting-started-first-scala.html)

请注意,这适用于akka演员。

最新更新