Thread.sleep in Scala-Darstellern

7

Ist es richtig, Thread.sleep(5000); in einem Akteur zu verwenden? Wird der Schauspieler tatsächlich 5 Sekunden lang schlafen? Gibt es eine einfache Alternative, um einen Schauspieler für einige Sekunden schlafen zu lassen?

    
As As 11.09.2014, 14:23
quelle

1 Antwort

20

Alles, was einen Thread blockiert, wird in Akka nicht empfohlen. Wenn der Actor mit einem gemeinsamen Thread-Pool konfiguriert ist (Standardverhalten), wird Thread.sleep einen Thread aus diesem Pool zurückhalten, der für andere Actors arbeiten könnte.

Wenn man wirklich blockieren muss, dann kann ein Akteur so konfiguriert werden, dass er einen eigenen Thread hat. Dies kann durch Konfigurieren eines benutzerdefinierten Dispatchers für den Benutzer geschehen, die vollständigen Details sind hier .

Die erkannte Alternative zur Blockierung ist, einen Rückruf zum Akteur über einen Timer zu planen, zum Beispiel eine Nachricht nach 5 Sekunden zu senden.

%Vor%

Der Akka-Scheduler ist hier dokumentiert: Ссылка

    
Chris K 11.09.2014, 14:26
quelle

Tags und Links