μJavaActors

actor系统的Java实现
授权协议 未知
开发语言 Java
所属分类 程序开发、 并发/并行处理框架
软件类型 开源软件
地区 不详
投 递 者 李飞翼
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

μJavaActors 是 actor 系统的一个简单的 Java 实现。只有 1,200 行代码,μJavaActors 虽然很小,但很强大。在下面的练习中,您将学习如何使用 μJavaActors 动态地创建和管理 actor,将消息传送给它们。

μJavaActors 围绕 3 个核心界面而构建:

  • 消息 是在 actor 之间发送的消息。Message 是 3 个(可选的)值和一些行为的容器:
    • source 是发送 actor。
    • subject 是定义消息含义的字符串(也称为命令)。
    • data 是消息的任何参数数据;通常是一个映射、列表或数组。参数可以是要处理和/或其他 actor 要与之交互的数据。
    • subjectMatches() 检查消息主题是否与字符串或正则表达式匹配。
    μJavaActors 包的默认消息类是 DefaultMessage
  • ActorManager 是一个 actor 管理器。它负责向 actor 分配线程(进而分配处理器)来处理消息。ActorManager 拥有以下关键行为或特征:
    • createActor() 创建一个 actor 并将它与此管理器相关联。
    • startActor() 启动一个 actor。
    • detachActor() 停止一个 actor 并将它与此管理器断开。
    • send()/broadcast() 将一条消息发送给一个 actor、一组 actor、一个类别中的任何 actor 或所有 actor。
    在大部分程序中,只有一个 ActorManager,但如果您希望管理多个线程和/或 actor 池,也可以有多个 ActorManager。此接口的默认实现是 DefaultActorManager
  • 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 之间的关系
actor 通过线程向其他 actor 发送消息

介绍内容节选自 IBM DW

 相关资料
  • 本文向大家介绍java实现选课系统,包括了java实现选课系统的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现选课系统的具体代码,供大家参考,具体内容如下 这个程序主要是练习IO(文件读写,序列化),集合框架的使用 学生端可以实现,查找课程,增加选课,删除选课的功能 管理端可以实现对备选课程,学生信息的增删查改 缺点:登陆操作没有实现密码验证和多态。           

  • 本文向大家介绍java实现门禁系统,包括了java实现门禁系统的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现门禁系统的具体代码,供大家参考,具体内容如下 Door.java Computer.java Amind.java Employee.java Guest.java Validate.java FingVId.java PasswordVId.java Test.

  • 问题内容: 我需要一个“系统”函数调用,与Python,Perl,PHP,Ruby和&c相同。当它在Rhino JavaScript引擎上运行时,它将成为名为Narwhal的JavaScript标准库的组件,而Rhino JavaScript引擎又在Java上运行。 问题在于Java的标准库似乎已经抽象出了生成共享父进程的stdio的子进程的能力。这意味着您不能将交互性推迟到子流程中。 我的第一个

  • 本文向大家介绍java实现学籍管理系统,包括了java实现学籍管理系统的使用技巧和注意事项,需要的朋友参考一下 本教程为大家分享了学籍管理系统的具体java代码,供大家参考,具体内容如下 1.需求分析 1.1系统功能设计 (1)能够查询学生的基本信息,如:学号,姓名年龄,班级和性别 (2)能对表格中的学生信息实现增加,删除,查找,修改等功能 (3)能将数据保存到MySQL数据库中,记录下来 (4)

  • 本文向大家介绍Java实现医院管理系统,包括了Java实现医院管理系统的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java实现医院管理系统的具体代码,供大家参考,具体内容如下 1.开发工具 NetBeans8.2 Mysql5.7 mysql-connector-java-5.1.6.jar 2.演示 登录界面 增删查改界面 3.源码 网上难找一个带界面的管理系统源码,我把这简单

  • 本文向大家介绍Java实现购物管理系统,包括了Java实现购物管理系统的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java实现购物管理系统的具体代码,供大家参考,具体内容如下 重点内容 JAVA分支结构练习 动态数组 注册表读写删 代码: 更多学习资料请关注专题《管理系统开发》。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Java实现学生管理系统,包括了Java实现学生管理系统的使用技巧和注意事项,需要的朋友参考一下 项目描述:通过管理员帐号登录,对学员信息进行管理。可以实现学员信息的增加、修改、删除、查询。 知识点:数组、do{}while循环、for循环、if语句、switch条件语句 学生管理系统的流程图 以下为优化后的代码 本代码为Java初级人员编写,方法运用不是很恰当,仅供娱乐。 以上就是

  • 本文向大家介绍Java实现员工管理系统,包括了Java实现员工管理系统的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java实现员工管理系统的具体代码,供大家参考,具体内容如下 本系统主要练习到的相关内容: 1、 流程控制语句 2、 类、对象 3、 封装、继承、多态 4、 方法的重载、重写 5、 访问修饰符 6、 static 需求说明: 员工信息的基本情况 —————————普通