2012-07-12 101 views
2

所有我看过的工作是这样的教程:斯卡拉阿卡演员的行为()函数

class HelloWorldActor extends Actor { 
    def receive = { 
    case "Hello" => self.reply("World") 
    } 
} 

val myActor = system.actorOf(Props[MyActor], name = "myactor") 

我想知道如果AKKA支持一个演员类像这里面的行为()函数:

class HelloWorldActor extends Actor { 
    def act() = { 

    } 
} 

然后你就可以拨打:

val myActor = new HelloWorldActor 
myActor.start() 

我想这样做,因为我的演员不会receieving任何消息。它只是在自己的工作。那么我可以在我的AKKA演员中使用act()函数吗?

+3

如果你的演员没有收到任何消息,那么你的演员对此有何反应?也许你需要的是[未来](http://doc.akka.io/docs/akka/2.0.1/scala/futures.html)? – Debilski 2012-07-12 23:26:42

回答

6

在Akka中,您的演员应该在使用系统创建后自动启动。但是,听起来好像你想使用这个演员就像我们都从Java那里知道的纯线程。我认为这不是从惯用的角度来看的正确方法。你当然可以给你的演员添加一个开始消息,在创建之后将其发送给演员,并在处理程序中进行处理。但是如果你不想对任何消息作出反应,或许你应该考虑使用一个简单的线程或一个Future而不是一个actor。

+0

如何使用普通线程或未来?期货功能?阅读本教程后,我不清楚如何使用未来。 – user1491739 2012-07-13 00:02:30

+1

对于普通线程,只需扩展Java Thread类并实现'run()'方法即可。那里有很多例子。对于未来而言,@Debilski已经将你与一篇解释其用途的文章联系在一起。看看“直接使用”部分。如果两种解决方案都不适合你的问题,你应该更详细地描述它。 – 2012-07-13 00:16:42