μJavaActors 介绍
μJavaActors 是 actor 系统的一个简单的 Java 实现。只有 1,200 行代码,μJavaActors
虽然很小,但很强大。在下面的练习中,您将学习如何使用 μJavaActors 动态地创建和管理 actor,将消息传送给它们。
μJavaActors 围绕 3 个核心界面而构建:
-
消息 是在 actor 之间发送的消息。Message 是 3 个(可选的)值和一些行为的容器:
-
ActorManager 是一个 actor 管理器。它负责向 actor 分配线程(进而分配处理器)来处理消息。ActorManager 拥有以下关键行为或特征:
-
Actor 是一个执行单元,一次处理一条消息。Actor 具有以下关键行为或特征:
- 每个 actor 有一个 name,该名称在每个 ActorManager 中必须是惟一的。
- 每个 actor 属于一个 category;类别是一种向一组 actor 中的一个成员发送消息的方式。一个 actor 一次只能属于一个类别。
- 只要 ActorManager 可以提供一个执行 actor 的线程,系统就会调用 receive()。为了保持最高效率,actor 应该迅速处理消息,而不要进入漫长的等待状态(比如等待人为输入)。
- willReceive() 允许 actor 过滤潜在的消息主题。
- peek() 允许该 actor 和其他 actor 查看是否存在挂起的消息(或许是为了选择主题)。
- remove() 允许该 actor 和其他 actor 删除或取消任何尚未处理的消息。
- getMessageCount() 允许该 actor 和其他 actor 获取挂起的消息数量。
-
getMaxMessageCount() 允许 actor 限制支持的挂起消息数量;此方法可用于预防不受控制地发送。
大部分程序都有许多 actor,这些 actor 常常具有不同的类型。actor 可在程序启动时创建或在程序执行时创建(和销毁)。本文中的 actor
包 包含一个名为
AbstractActor 的抽象类,actor 实现基于该类。
图 1 显示了 actor 之间的关系。每个 actor 可向其他 actor 发送消息。这些消息保存在一个消息队列(也称为 邮箱 ;从概念上讲,每个
actor 有一个队列,当 ActorManager 看到某个线程可用于处理消息时,就会从队列中删除该消息,并将它传送给在线程下运行的
actor,以便处理该消息。
图 1. actor 之间的关系
μJavaActors 官网
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。