首页 / 软件开发 / JAVA / Java开发2.0: Kilim简介
Java开发2.0: Kilim简介2011-10-22 IBM Andrew Glover一种用于实现 Java 并发性的角色框架简介:并发编程是 Java™ 开发 2.0 的核心概念,但可能不是基于线程的并发性。Andrew Glover 解释为什么在多核系统中进行并发编程时,角色优于线程。他然后介绍 Kilim —— 一种基于角 色的消息传递框架,结合了并发编程和分布式编程。对于软件开发人员而言,调试多线程应用程序中的非确定缺陷是最痛苦的工作。因此,像大多数人一 样,我钟爱使用 Erlang 和 Scala 等函数语言进行并发编程。Scala 和 Erlang 都采用了角色模型来进行并发编程,没有采用线程概念。围绕角色模型的创新并不 仅限于语言本身,角色模型也可供 Kilim 等基于 Java 的角色框架使用。Kilim 对角色模型的使用非常直观,稍后您将看到,该库使构建并发应用程序变得异常简单。多核挑战在 2005 年,Herb Sutter 编写了一篇现在仍然颇为著名的文章 “The Free Lunch is Over: A Fundamental Turn Toward Concurrency in Software”。在这篇文章中,他摒弃了一直误导着人们的观 念,那就是摩尔定律将继续促进越来越高的 CPU 时钟速率。Sutter 预言了 “免费午餐” 的终结,通过越来越快的芯片来捎带提升软件应用程序的性能将不再可 能。相反,他认为应用程序性能的显著提升将需要利用多核芯片架构来实现。事实证明他是对的。芯片制造商已经达到了一种硬性限制,芯片速率已稳定在 3.5 GHz 左右多年了。 随着制造商越来越快地增加芯片上的核心数量,摩尔定律在多核领域继续得以满足。Sutter 还提到并发编程将使开发人员能够利用多核架构。但是,他补充道,“相比如今的各种语言提 供的编程模型,我们亟需一种更高级的并发编程模型。”Java 等语言的基本编程模型是基于线程的。尽管多线程应用程序并不是很难编写,但正确 编写它们 仍然面临许多挑战。并发编程的一个困难之处是利用线程来考虑并发性。如今已有许多并发模型,一种特 别有趣并获得了 Java 社区认可的模型就是角色模型。角色模型角色模型是一种不同的并发进程建模方式。与通过共享内存与锁交互的线程不同,角色模型利用了 “ 角色” 概念,使用邮箱来传递异步消息。在这里,邮箱 类似于实际生活中的邮箱,消息可以存储并供其 他角色检索,以便处理。邮箱有效地将各个进程彼此分开,而不用共享内存中的变量。角色充当着独立且完全不同的实体,不会共享内存来进行通信。实际上,角色仅能通过邮箱通信。角 色模型中没有锁和同步块,所以不会出现由它们引发的问题,比如死锁、严重的丢失更新问题。而且,角 色能够并发工作,而不是采用某种顺序方式。因此,角色更加安全(不需要锁和同步),角色模型本身能 够处理协调问题。在本质上,角色模型使并发编程更加简单了。角色模型并不是一个新概念,它已经存在很长时间了。一些语言(比如 Erlang 和 Scala)的并发模 型就是基于角色的,而不是基于线程。实际上,Erlang 在企业环境中的成功(Erlang 由 Ericsson 创建 ,在电信领域有着悠久的历史)无疑使角色模型变得更加流行,曝光率更高,而且这也使它成为了其他语 言的一种可行的选择。Erlang 是角色模型更安全的并发编程方法的一个杰出示例。不幸的是,角色模型并没有植入到 Java 平台中,但我们可以通过各种方式使用它。JVM 对替代语言 的开放性意味着您可以通过 Java 平台语言(比如 Scala 或 Groovy)来利用角色。另外,您可以试用一 种支持角色模型且基于 Java 的库,比如 Kilim。