2013-09-05 4 views
5

Если бы я назватьОтправка сообщений из непрофессиональных актеров в Акку

actorRef.tell("MSG", null); 

из не актера

Является ли он по-прежнему поточно? И асинхронно, как в завершении немедленно?

Сообщение неизменное.

В основном мой код:

class NonActor { 
    .... 

    public void tellTest() { 

     actorRef.tell("MSG", null); 
    } 
} 
+0

Каков ваш код? – gparyani

ответ

5

В основном actorRef.tell("MSG", null); создает запись как

(actorRef, Envelope(msg, sender)) 

и поставить его в очередь сообщений ActorSystem «s. Таким образом, tell никак не связан с актером. Сам метод tell, несомненно, является потокобезопасным.

+0

Это были мои мысли о его работе, и это действительно так. Найдено в документах и ​​подтверждено несколько дней назад. – BAR

1

ли это поточно-зависит от остальной части вашего приложения. Актеры не являются по сути нитевидными; вы можете делиться изменяемым состоянием так же, как и с любым объектом приложения. Но вызов tell будет немедленно возвращаться, потому что он асинхронный.

+0

Вы имеете в виду, зависит от самого msg? До тех пор, пока он непреложный? – BAR

+0

Пока msg неизменен, и актер не использует какое-либо общее изменяемое состояние. –

0

Нуль в качестве отправителя означает, что принимающий субъект не может выполнить отправитель(). Tell(), чтобы ответить на ваше сообщение.

Смежные вопросы