Scala Actors:是否有内置的方法来阻止/中断演员?

时间:2011-11-14 04:26:28

标签: scala interrupt 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:对不起我的英文......

2 个答案:

答案 0 :(得分:1)

如另一个答案所示,actor模型专门用于限制与Actor的所有交互以消息传递和处理。 Scala / Akka通过调用actorOf方法强制您创建一个Actor来实现此目的。由于您没有对底层对象的引用,因此无法直接在其上调用方法。

所以,如果你想要一个可以被打断的Actor,只需要处理一些可以做到这一点的消息。

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

并在您的客户端代码中

a ! 'Interrupt

答案 1 :(得分:0)

您可以向Actor发送一个PoisonPill让他终止(参见http://akka.io/docs/akka/1.2/intro/getting-started-first-scala.html

请注意,这适用于akka演员。不知道斯卡拉演员。