要使用JActor,你首先要了解一些基础类,从这篇文章开始我会列出一些常用的基础类来让大家了解JActor的基础知识。
首先说JLPCActor,本篇文章主要讲这个类。
如果你要定义一个Actor类,那么你需要让它继承自JLPCActor这个类,你所定义的这个类的方法不必是线程安全的,它们通常会在合适的线程中被调用。
Actor之间通过发送请求来进行交互。但是在发送或接收请求之前,Actor必须指定一个mailbox,用来管理它的输入或输出。
Actor的方法有两种:同步的和异步的。异步的方法可以使用异常句柄并且发送消息给其它的Actor,而同步的消息不可以。
异步方法由于引入RP参数(一种用来返回结果的回调)而与众不同。异步方法的返回值通常都是空的。
使用同一个mailbox的Actor之间可以相互调用它们之间的同步方法,因为他们通常都在一个线程中或者说它们共享一个线程。
可以使用initialize(mailbox)方法来给一个actor指定mailbox,或者你也可以使用initialize(mailbox,actor)方法来给一个actor注入(指定)一个mailbox。被注解的Actor继承了注解给它们的Actor所拥有的处理请求的能力,可以理解为递归。所以当不恰当类型的请求发送给Actor时,它其实被发送给了所注入的Actor。
getMailbox()方法返回指定给actor的mailbox,getMailboxFactory()方法返回创建mailboxes的MailFactory。
getParent()方法返回注解Actor或者空。getAncestor(actorClass)方法返回注解给它所实现接口的类的实例或者空对象。