在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演员。