InfoQ

新闻

Java并发新特性: Phasers

作者 R.J. Lorimer译者 张凯峰 发布于 2008年7月16日 上午4时6分

社区
Java
主题
JCP标准,
性能和可伸缩性
标签
并发,
JCP
本周,JSR 166并发工具包的规范领导者——Doug Lea,就JSR-166y引入的新特性——Phasers在166y concurrency-interest邮件列表上发贴推介。
之前受限于ForkJoinTasks(在forkjoin.TaskBarrier类中)的灵活的Barrier功能,现在被重写为Phaser类(放在j.u.c而不是j.u.c.forkjoin中),这样就可以应用到任何任务中去。
“Phaser"这个概念和名字是由Rice大学的一个团队在一份白皮书中创造出来的。这样命名的原因在于该构造的相位有序性和死锁预防属性。这份白皮书较为详尽地解释了phaser的概念。同Java目前已有特性相比,虽然Phaser实现的功能与CyclicBarrier类 (Java5中引入)类似,但是在灵活性上它要更胜一筹。
[java.util.concurrent]CyclicBarrier 类支持线程集内周期性Barrier同步。然而它并不能像Phasers那样做到线程的动态添加和移除,以及单向同步和分相操作。
研究另外的Barrier实现的主要动机之一不仅仅是要增加灵活性,还要提高Barrier同步概念的性能和可伸缩性。
Phasers在三个不同的SMP系统上运行结果显示,除了普遍适用性和安全性带来的生产效率的提高外,其性能也明显优于现有的Barrier实现。
正如Doug Lea所说,JSR-166y引入的Phaser由现有的fork/join框架改写而来。InfoQ此前的很多文章都提到过fork/join框架,它是即将发布的166y JSR的重要特性之一,Doug Lea曾为其专门写过一份介绍用途和用法的白皮书 。前面提到的TaskBarrier类被fork/join框架用来管理不同任务的边界,并合并运行结果,换句话说就是连接任务。

在JSP-166y上可以找到Phaser类的Javadoc草稿,Lea在他发给邮件列表的邮件中强调现在的文档仍然出于草稿状态:
一如即往地欢迎提出意见和建议。在我们进一步研究如何使用它的过程中,API也许会发生一些改变,我们希望在此过程中能发现更合适的方法名。
目前人们都期待着JSR-166y被纳入Java 7,成为该平台的一部分。

查看英文原文:New Java Concurrency Feature: Phasers

没有回复

回复

独家内容

世界顶尖运动队教练的成功秘诀

本文列出了来自于顶级教练Marc Lammers的9条原则,他是在打造世界最佳曲棍球队的过程中发现这些原则的,文章把这些原则映射到了软件开发实践之中。

探索JVM上的LISP

本文由Per Jacobsson所作,目标读者为有意了解Lisp的Java开发人员。文章探讨了当前可以运行于JVM上的不同Lisp方言,以明快简洁的方式介绍了Lisp程序设计工作机理和其独特之处,并在最后演示了Lisp代码同Java系统的整合过程。

Ruby/Rails: 不一样的'Web'应用

本文以一个实际应用的例子为引子,探讨Ruby/Rails在非传统web系统中应用,以及研究如何定制以Rails为基础的领域特定的MVC框架。

认识云计算

本视频对云计算进行了简要的介绍,主要包括了五部分内容:首先带大家认识“云”,然后对计算机的发展过程进行了阐述,接着介绍了业界现状和企业级/世界级计算的新布局,最后对云计算做了一下展望。

AtomServer:数据分发的发布动力

在这篇文章中,Bryon Jacob和Chris Berry介绍了AtomServer,一个基于Apache Abdera的完整Atom存储实现。在去年,作者一直致力于为其雇主——Homeaway——实现一个Atom存储,现在已开源了其Atom存储框架:AtomServer。

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。