actor中!(tell)与forward的区别
来源:互联网 发布:dwg是什么软件 编辑:程序博客网 时间:2024/05/01 18:26
! 的源码:
def !(message: Any)(implicit sender: ActorRef = Actor.noSender): Unit
tell 的源码:
final def tell(msg: Any, sender: ActorRef): Unit = this.!(msg)(sender)
forward 的源码:
def forward(message: Any)(implicit context: ActorContext) = tell(message, context.sender())
通过源码,我们可以轻而易举的知道 :
! 发送的消息的发送者通过一个隐式转换,把一个ActorRef转换成sender,如果找不到ActorRef的话,那个发送者就是noSender。
forward 发送消息的发送者是当前消息的上一个发送者。
即:
A To B, B To C
如果通过!的方式发送消息,则C接收到的消息的发送者是B.
如果通过 forward 的方式发送消息,则C接收到的消息的发送者是A.
如果希望 !的方式发送消息的同时携带发送者消息,则可以使用 .!(msg)(sender)
如果希望关掉actor,直接shutdown或者使用父亲actor的stop,在actor内部还可以使用context.stop(self)
0 0
- actor中!(tell)与forward的区别
- actor中!(tell)与forward的区别
- Unreal 中 Actor与Pawn的区别
- Struts中forward与global-forward的区别
- jsp中forward与sendRedirect的区别
- JSP中forward与sedRedirect的区别
- Jsp中include与forward的区别
- jsp中forward与sendRedirect的区别
- servlet中forward与redirect的区别
- forward与global-forward的区别
- Servlet中forward和include的区别&forward与redirect区别
- forward与direct的区别!
- forward与redirect的区别
- forward与redirect的区别!
- forward与redirect的区别
- forward与redirect的区别
- forward 与redirect的区别
- forward() 与redirect()的区别
- 二项队列分析及实现
- 开闭原则OCP
- Messenger源码解析
- [iOS Swift3.0] 定位二维码+绘制定位框+简单使用UIBezierPath和CAShapeLayer
- 金融行业风控概念及分析
- actor中!(tell)与forward的区别
- 构造方法,static,文档
- 动态规划
- codeforces363D——Renting Bikes(二分,贪心)
- 提高安卓APP开发效率、管理代码的架子(一):BaseActivity&BaseApplication
- IDE常用快捷键——微信小程序
- RocketMQ简介
- 图像小波分解示意图
- 数据结构-串(字符串)