当前位置: 首页 > 工具软件 > JActor > 使用案例 >

Actor模式的Java实现 JActor

申屠鹏
2023-12-01

JActor 是一个 Java 的 Actor 模式的实现,经过测试在 i5 CPU 上可支持每秒钟发送超过亿条消息,可能是目前最快的。这相当于是 Scala 的 Actor 的纯 Java 版本。

示例代码:

JAMailboxFactory mailboxFactory = JAMailboxFactory.newMailboxFactory(1);
try {
    Mailbox mailbox = mailboxFactory.createMailbox();
    JCActor a = new JCActor(mailbox);
    (new Include(Greeter.class)).call(a);
    JAFuture future = new JAFuture();
    String greeting = (new Hi()).send(future, a);
    System.out.println(greeting);
} catch (Exception e) {
    e.printStackTrace();
} finally {
    mailboxFactory.close();
}

这个是用来编写高并发应用的库。一般编写并发应用程序马上想到多线程或者多进程。但多线程需要处理资源竞争,共享访问等问题,搞不好容易出现死锁,当程序规模比较大时,排查难度很大。 Actor模型提供了另一种编写并发应用程序的思路。 有点类似Node.JS的基于事件异步处理. (其实我觉得基于消息异步和基于事件异步是一回事)

什么是基于消息异步呢?很简单,比如要开展一个项目,需要多人协作。作为项目经理的你,只需要像手下发出命令,个人各干各的,互不干扰。做完了就回送一个消息给项目经理,项目经理再分派新的任务.  (可能比喻得不恰当,但Actor的基本思路就是这样,你不需要考虑资源共享和线程并发什么的,  Actor库屏蔽了这些底层的实现细节 . 每个Actor就相当于一个人或者叫一个处理者,他们的职责很单一,就是响应对方发来的消息,做出响应,并回送一个响应消息。 每个Actor负责做自己的份内事,最后有一个调度角色的Actor将所有Actor管理起来,形成一个整体)

Akka 是针对Scala和Java的Actor库,JActor是一个用纯Java编写的Actor库。

 类似资料: