免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

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

关注

评论

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

sql注入--通过修改数据完成注入--一文详细讲解

贤鱼很忙

Web SQL注入 10月月更

跟着卷卷龙一起学Camera--夜景拍照01

卷卷龙

ISP camera 10月月更

SAAS公司的金额续费率怎么算

久歌

企业架构 SaaS 数字化

MySQL高级--性能优化开篇

Java学术趴

10月月更

跟着卷卷龙一起学Camera--RGBNIR sensor 01

卷卷龙

ISP camera 10月月更

使用 Scrapy 框架来爬取数据

芯动大师

spider scrapy框架 10月月更

面试官:你是怎样进行react组件代码复用的

beifeng1996

React

Vue组件入门(二)props和emit

Augus

Vue3 10月月更

【网络安全】如何在Apache 安装开源 WAF

网络安全学海

黑客 网络安全 信息安全 渗透测试

爬虫实例——爬取豆瓣网 top250 电影的信息

芯动大师

Python爬虫 10月月更 爬虫案例

【网络安全篇】php伪协议-漏洞及其原理

贤鱼很忙

php 网络安全 Web 10月月更

MySQL高级--性能优化之索引使用

Java学术趴

10月月更

跟着卷卷龙一起学Camera--RGBNIR sensor 02

卷卷龙

ISP camera 10月月更

sql注入--handler语句--一文详细解说其原理和方法

贤鱼很忙

Web SQL注入 10月月更

Java文档注释 Intellij IDEA Generate JavaDoc

Yeats_Liao

后端 doc Java core 10月月更

《数字经济全景白皮书》中国银行业场景金融生态建设分析2022 发布

易观分析

金融 客户 场景生态建设

【愚公系列】2022年10月 Go教学课程 025-递归函数

愚公搬代码

10月月更

得物 × StarRocks:潮流网购社区的极速 OLAP 实践

StarRocks

数据库、

MySQL高级--性能优化之Explain分析SQL

Java学术趴

10月月更

Dapr简介-分布式应用运行时

久歌

架构 servicemesh 技术架构 dapr

2022-10-11:一个整数区间 [a, b] ( a < b ) 代表着从 a 到 b 的所有连续整数,包括 a 和 b。 给你一组整数区间intervals,请找到一个最小的集合 S, 使得

福大大架构师每日一题

算法 rust 福大大

Spring Boot「03」使用 Maven 管理并构建项目

Samson

Java spring Spring Boot 学习笔记 10月月更

一天梳理完react面试高频题

beifeng1996

React

软件工程基础知识总结

老张

软件工程

MySQL高级--性能优化之索引

Java学术趴

10月月更

使用rust实现的持久kv存储

杨光跃

rust KV存储引擎

基础算法:二分查找 搜索插入位置

芯动大师

Python 二分查找 10月月更

【一Go到底】第十一天---流程控制

指剑

Go golang 10月月更

云服务架构设计基础模式

穿过生命散发芬芳

10月月更 云服务架构

Flash软件应用项目(一)

张立梵

设计师 Flash 10月月更

技术解读:现代化工具链在大规模 C++ 项目中的运用 | 龙蜥技术

OpenAnolis小助手

c++ 开源 龙蜥技术 优化技术 ThinLTO

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