2012-07-12 156 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