在编写 Scala RemoteActor 代码时,我注意到了一些陷阱:
- 必须设置 RemoteActor.classLoader = getClass().getClassLoader() 以避免“java.lang.ClassNotFoundException”
- 由于“支持远程参与者的 NetKernel(负责远程转发消息的设施)可以在远程参与者的代理(更具体地说,代理委托)有机会发送之前关闭的竞争条件,链接并不总是有效远程指示本地出口的消息。” (斯蒂芬·图)
- RemoteActor.select 并不总是返回相同的委托(RemoteActor.select - 结果确定性?)
- 通过网络发送委托会阻止应用程序正常退出(RemoteActor unregister actor)
- 如果 RemoteActor.alive() 和 RemoteActor.register() 在动作之外使用,远程 Actor 不会终止。(见马格努斯的回答)
程序员还应该注意其他陷阱吗?