2013-08-01 34 views
0

下面的代碼,使我的電腦掛所有的時間:演員讓我的電腦掛

object Application extends App { 
    val system = ActorSystem() 
    val supervisor = system.actorOf(Props[Supervisor]) 
    implicit val timeout = Timeout(10 seconds) 

    import system.dispatcher 

    val future = supervisor ? Supervisor.Start 
    val idList = Await.result(future, timeout.duration).asInstanceOf[List[MyClass]] 
    supervisor ! idList 
} 

它引起的timeout異常,但後來,當它幾乎沒有響應。以前,當這段代碼沒有使用actor時,一切正常。

我不能發佈它,因爲它有很多。我必須發佈什麼代碼?

UPDATE

如何才能知道問題出在哪裏?

+0

是否掛起計算機(即操作系統),或只是Java進程? – Bathsheba

+0

@Bathsheba,這很難說。無論如何,我最終重新啓動。 –

+0

你是什麼意思掛過程?我認爲你的意思可能是應用程序不終止? – Jatin

回答

2

看起來您並未終止您的Actorsystem,因此應用程序不會終止。 最後,您需要致電system.shutdown,這將關閉ActorSystem

內部ActorSystem管理需要終止應用程序終止的線程。 shutdown終止它們。不調用它將阻止你的應用程序關閉,因爲線程仍然活着。

+1

由於關閉是異步的,您也可以在關閉後調用system.awaitTermination。 –