这篇文章主要给大家讲下Mailbox,我认为学东西,基础最重要,基础都不懂学着就不会很流畅。后续我会结合实例为大家分享JActor。
被指定给actor的mailbox有一个收件箱用来接收消息(请求或响应),同时它也有一个发件箱用来发送给指定给它的actor。(发出去的消息以被有条理的组织成有优先级消息 块的手段来提高消息的吞吐量)
当消息发送给一个没有收件箱的maibox时mailbox相当于是一个指定给线程池中的线程的任务。
大部分mailbox都支持使用权,也就是说它允许Actor的线程直接发送消息来处理消息,但你要保证mailbox的目标Actor没有被指定给一个线程。
消息一般仅在收件箱里最后一条消息被处理后发送,不过你可以使用sendPendingMessages()方法来强制发送在发件箱里的所有消息。
setInitialBufferCapacity(int)方法用来设置发件箱的初始容量,如果不设置的话默认是10(注:Outboxes的实现方式类似于array lists)。
isEmpty()方法用来判断收件箱里有没有要处理的消息,当没有消息要处理时返回true,否则返回false。
getMailboxFactory()方法返回创建mailbox的工厂。