50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

包头等保测评中心电话是多少?在哪里?

行云管家

等保测评 包头 等保测评机构

花第1小时成tidb专家--云上资源特别,贵公司让我省钱ap篇

TiDB 社区干货传送门

8.x 实践

北京银行如何利用 TiDB 实现20个关键业务系统的高效运行

TiDB 社区干货传送门

TiDB v7.5.3 发版,听说升级后又可以躺平两年

TiDB 社区干货传送门

版本升级 新版本/特性解读 7.x 实践

音乐制作工具:Studio One 6 (Win&Mac) 激活版

你的猪会飞吗

Studio One 许可证 Studio One 破解 Studio One 6下载

首部顶级AI科学家创作的纯正科幻小说,一个元宇宙和AI时代的全新科学幻想!

博文视点Broadview

巴黎同款,六自由度技术还原赛场决定性瞬间!

快手技术

视频 渲染

TiKV 事务介绍

TiDB 社区干货传送门

TiKV 源码解读

一年同行:我的TiDB社区之旅 

TiDB 社区干货传送门

人物访谈

什么是CSPO及成为CSPO的好处?

ShineScrum

如何使用C# 获取Windows系统信息以及CPU、内存和磁盘使用情况

哦豁完蛋了

操作ArkTS页面跳转及路由相关心得

OpenTiny社区

开源 前端 OpenTiny ArkTS

从原理到实践,GraphRAG 如何提升 LLM 的摘要总结能力?

可信AI进展

花2小时成tidb专家--云上资源特别贵kv业务的节省

TiDB 社区干货传送门

8.x 实践

我与tidb的十年,我的职业生涯中遇到的各式各样的数据库。

TiDB 社区干货传送门

社区活动 TUG 话题探讨

手摸手教你,从0到1开发一个Chrome浏览器插件

左诗右码

Chrome Extension

关于低代码这一技术的杂谈

秃头小帅oi

告别杂音,从 AI 音频降噪开始

七牛云

AI降噪

GC异常导致空间不释放,如何通过 tikv-ctl recover-mvcc 修复

TiDB 社区干货传送门

故障排查/诊断

TiDB 执行计划代价模型分析

TiDB 社区干货传送门

性能调优 TiDB 底层架构

断崖式领先!百度搜索登顶AI产品榜国内第一

极客天地

头部保险公司国寿财核心系统采用 TiDB 实现信创替换并实现重大突破

TiDB 社区干货传送门

实践案例

ClkLog埋点分析系统支持漏斗分析

ClkLog

数据分析 埋点 用户行为分析 开源软件 用户画像

我当初为什么选择了tidb抛弃了postgresql

TiDB 社区干货传送门

性能测评

手把手教你修改 TiDB 监控告警阈值

TiDB 社区干货传送门

集群管理

TiDB主键锁(primary key lock)问题诊断

TiDB 社区干货传送门

故障排查/诊断

代理IP在社媒营销中的重要作用

IPIDEA全球HTTP

堡垒机高可用主备模式部署定义以及优势讲解!

行云管家

等保 堡垒机 堡垒机品牌

记录一起非数据热点引起的TiKV负载不均衡

TiDB 社区干货传送门

故障排查/诊断

解决tiup‘ssh: unable to authenticate’报错

TiDB 社区干货传送门

集群管理 管理与运维 故障排查/诊断 扩/缩容

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