1

因为我正在创建演员系统并创建主要演员,即创建大约 15 个其他演员的 actorModel。现在,在 actorModel 完成之前返回 true 会发生什么。当actorModel 完成其任务或actor 系统完成其任务时,我希望从该方法返回true。你知道我的意思。!帮助...

def doWork:Boolean ={
/* some code here....
 *
 */
val system=ActorSystem("system")
val actorModel=system.actorOf(Props(new ActorModel(userId,dateTimeId,form)),"actorModel")

true
}     
4

2 回答 2

2

一种选择是询问actorModelAwait回应。

val f = actorModel ? AreYouFinished
Await.ready(f, timeout)

ActorModel需要跟踪消息的发送者并AreYouFinished在任务完成时回复他们。

case AreYouFinished =>
  finishedWaiters = sender :: finishedWaiters

case TaskFinished =>
  finishedWaiters foreach (_ ! TaskFinished)

这是一个有用的用例askAwait非参与者代码等待参与者的结果。您通常不会等待Await在演员中使用。

请注意,演员系统是相当重量级的。您通常会为整个应用程序使用一个,而不是在函数中根据需要启动一个。同样根据华夫饼悖论,您还需要确保将其关闭。但通常你会在你的应用程序关闭时关闭它。

于 2013-10-11T16:20:41.580 回答
1

system.awaitTermination()在返回之前使用true.

于 2013-10-11T13:40:32.323 回答