在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:对不起我的英文......
答案 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演员。不知道斯卡拉演员。