9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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:276594
用户头像

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

关注

评论

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

Linux设备驱动系列(八)——ioctl系统调用

Linux内核拾遗

Linux Kenel 内核开发 设备驱动

电商新篇章:深入解析亚马逊国际关键字搜索商品API返回值

技术冰糖葫芦

API Explorer API boy api 货币化 pinduoduo API

通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?

阿里云云效

阿里云 云原生 通义灵码

通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?

阿里巴巴云原生

阿里云 云原生 通义灵码

网站服务器在美国的优势与挑战分析

一只扑棱蛾子

服务器

Databend 开源周报第 142 期

Databend

「软件测试面试题集解析课」限时优惠,助你高效备战,一举拿下心仪职位

霍格沃兹测试开发学社

记录工作以来遇到的最离谱的一个Bug

京东零售技术

Java 后端 企业号 4 月 PK 榜

LED显示屏的节能效果

Dylan

娱乐 环保 LED显示屏 全彩LED显示屏 led显示屏厂家

电商新纪元:亚马逊国际商品详情API返回值的重要性

技术冰糖葫芦

API boy api 货币化 pinduoduo API

软件测试学习笔记丨业务架构分析思路(业务架构分析)

测试人

软件测试

几个容器网络问题实战解析

鲸品堂

容器 抓包分析

想开发一款带有视频通话/共享屏幕功能的产品?那WebRTC是你必须要知道的!

编程的平行世界

WebRTC

HashMap 原理分析

footmanff

hashmap HashMap底层原理 hashmap源码

一次性讲明白,如何搞定一个可以支持多芯混合训练的 AI 集群

百度Geek说

企业号 4 月 PK 榜 AI集群

第49期|GPTSecurity周报

云起无垠

特斯拉全自动驾驶能力(FSD)或与百度合作;小红书内测自研大模型丨 RTE 开发者日报 Vol.196

声网

Baidu Comate:“AI +”让软件研发更高效更安全

百度安全

国内独家|阿里云瑶池发布ClickHouse企业版:云原生Serverless新体验

阿里云瑶池数据库

数据库 云计算 阿里云 Clickhouse

“星光不问赶路人,时光不负有心人”

开放签开源电子签章

电子合同 五一 电子签章

那些厉害的 Javaer 都在用什么?

秃头小帅oi

解锁HDC 2024之旅:从购票到报名,全程攻略

华为云开发者联盟

华为云 华为云开发者联盟 企业号2024年4月PK榜 HDC2024 华为开发者大会2024

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