阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

Kilim:actor 模型和消息传递的 Java 实现

  • 2008-07-03
  • 本文字数:1049 字

    阅读完需:约 3 分钟

正像在“多核危机:Scala vs. Erlang ”一文中所讲的,面对当前、尤其是未来的多CPU,需要大量的并行性计算,那么并发的消息传递和actor 模型将成为一种很有希望的解决之道。这些机制在Erlang 中是完全内置的,Scala 的框架中则包含了Scala Actor 库。在Java 的世界中,同样也存在一个纯Java 的实现—— Kilim

Kilim 是一个 Java 消息传递框架,它提供了超轻量级的线程和工具,可以在这些线程之间进行快速、安全、零复制的消息传递。

Kilim 包含如下组件:一个字节码后期处理程序(“weaver”),带有多个缓冲 mailbox(多生产者,单消费者队列)的运行时库,一个用户级的调度器,以及一个类型系统。它的类型系统对消息内部的指针别名增加了某些约束,确保线程之间不会彼此干扰。

而且它的性能看起来很不错。据 Sriram Srinivasan 在 Google Tech Talk 的演讲所称,Kilim 的任务切换比 Java 的线程切换快出 1000 倍,它的消息传递比 Erlang 快 3 倍。

Kilim 的用法是在方法和参数上标注 Annotation。如果一个方法被标注为 @pausable,则说明它直接地或者间接地调用了其他可暂停的方法,这种方法在其调用链中的某处,最终会调用 Kilim 的方法,比如Actor.sleep()或者Mailbox.get()。字节码后期处理器会将这些被注释的代码转换为延续``传递风格(continuation passing style)的代码。某些语言可以直接支持“延续”。其实,之前在一些著名的 Web 框架,比如 RIFE 和 Jetty 之中,“延续”就已经改头换面出现在 Java 中了。

另外,用于参数的标注包括@free、``@cuttable 或``@safe。Sriram Srinivasan 和 Alan Mycroft 在 ECOOP 2008 的一次演讲中描述了这些参数修饰符:

这些修饰符可以理解为一个在对象树中的对象的两种正交的特性:第一,它是否被另一个对象(在后面的情况中被称为“根”)所引用;第二,它是否在结构上可以改变(它的指针型域(pointer-valued field)是否是可分配的)。第二种性质具有传递性,如果一个对象的父亲是在结构上可改变的,那么它的孩子也是。

给定这些以后,可以判定,如果一个对象是对象树的根,并且它在结构上是可改变的,则这个对象是“自由的(@free)”。一个可切割的(@cuttable)对象可能是、也可能不是根,但它是 structurally modifiable。如果一个对象具有安全(@safe)特性,则不是 structurally modifiable(由于传递性),而不关心它是否是根。

Actor 模型出现的场合越来越多,无论未来你在哪种平台上用什么语言编程,Actor 模型都会是一个十分重要的概念。

查看英文原文 Kilim - actors and message passing in Java

2008-07-03 00:276124
用户头像

发布了 53 篇内容, 共 12.6 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

文心一言 VS 讯飞星火 VS chatgpt (117)-- 算法导论10.3 2题

福大大架构师每日一题

福大大架构师每日一题

国外服务器对网站速度的影响:事实与误解

一只扑棱蛾子

酷克数据发布HD-SQL-LLaMA模型,开启数据分析“人人可及”新时代

酷克数据HashData

Python 条件和 if 语句

小万哥

Python 程序员 软件 后端 开发

3DCAT实时云渲染赋能聚好看科技,打造3D沉浸式互动视频云平台

3DCAT实时渲染

云渲染 实时渲染 实时云渲染

Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进程

BlockChain先知

观测云产品更新 | 优化 SSO 管理、新增监控器类型、优化场景等

观测云

数据可视化 单点登录 监控器

Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进程

西柚子

亚太手游市场规模超百亿,华为游戏中心助力伙伴实现持续增长

最新动态

Linux远程管理工具

智趣匠

风口之下的低代码革命

互联网工科生

低代码

做开源九死一生!为什么还有那么多人前仆后继?

X2Rtc

开源 音视频 RTC 科技 十四五

OPPO ColorOS,重建用户和折叠屏的“亲密关系”

脑极体

OPPO

低代码助力软件开发

树上有只程序猿

软件开发 低代码 可视化开发

性能测试中数据处理经验分享

FunTester

Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进程

石头财经

Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进程

大瞿科技

发现一不错的编程助手 Amazon CodeWhisperer

亚马逊云科技 (Amazon Web Services)

人工智能 CodeWhisperer 云上探索实验室

云原生数据库 GaiaDB 的核心技术演进和解析

Baidu AICLOUD

云原生数据库

Mojo——会燃的 AI 编程语言

CODING DevOps

INFINI Labs 产品更新 | Easysearch 优化字段压缩提升写入速度,Console 优化数据迁移和校验等功能

极限实验室

INFINI Console easysearch

三江学院“火焰杯”软件测试高校就业选拔赛颁奖仪式

测试人

什么是低代码开发平台?有什么优势?

这我可不懂

软件开发 低代码 数字化

第4期 | GPTSecurity周报

云起无垠

体育赛事直播系统解决方案,将娱乐、互动和传播融合于一体

软件开发-梦幻运营部

人工智能:科学、医疗、工业的未来之光

测吧(北京)科技有限公司

测试

HypeX Labs:充分释放加密资产的潜力

股市老人

APE猿岛游戏系统开发(ApeCoin DAO)

薇電13242772558

NFT 链游

如何使用 NFTScan 的 TON API 实现 NFT 应用开发?

NFT Research

NFT NFT\ NFTScan nft工具

腾讯云 CODING 快速应用中心,让您 10 分钟轻松玩转 AIGC

CODING DevOps

手帐怎么做?推荐这10款手帐达人都在用的好用软件!

彭宏豪95

效率 科技 在线白板 办公软件 笔记软件

Kilim:actor模型和消息传递的Java实现_Java_Niclas Nilsson_InfoQ精选文章