BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Java并发新特性: Phasers

| 作者 R.J. Lorimer 关注 0 他的粉丝 ,译者 张凯峰 关注 1 他的粉丝 发布于 2008年7月17日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!
本周,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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT