Java7 java.util.concurrent 并发包计划

标签: 并发译文 | 发表时间:2014-02-04 14:04 | 作者:DOM
出处:http://ifeve.com

原文链接译文链接,译者:DOM,校对:郑旭东

 Java7发布版本的具体计划应该开始了,之前经常有人问我们关于JSR166的后续计划包含哪些内容。下面是目前暂定的内容,欢迎提出你们的见
解和意见。
1.Phasers
   一个通用的内存屏障实现。
2.LinkedTransferQueue (and TransferQueue interface)
  一个具有非阻塞,阻塞和同步接口的队列。
3. ConcurrentReferenceHashMap
  并发Hash Map,其键和值可以是弱引用或者软引用。
4. Fences (in java.util.concurrent.atomic)
   底层的内存屏障实现
5. ForkJoin framework.
   (具体见下面)
       这些功能的初始版本可以在很多地方看到。Phasers 和 LinkedTransferQueues在JSR166y中,
       Fences API 的说明可以在这个地址查看到, http://gee.cs.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/atomic/Fences.html
说明文档还需要再做一些修改,同时Fences API也需要Java虚拟机的支持。(目前任何Java虚拟机上实现的Fences API都有效率问题,在Fences API能高效执行之前是没有多大用处的) 加入这个Fences API也是为了更好的与即将到来的C++0x APIs相对应。
       Jason Greene基于ConcurrentHashMap编写了ConcurrentReferenceHashMap。我想最新的版本应该是在这里
我们推迟集成ConcurrentHashMap,因为需要等待GC支持Ephemerons(一个弱引用键-值链的方案)。虽然此举可以推动其它部门,但我不认为Ephemeron能很快得到支持,所以我们需要考虑在GC不支持Ephemerons情况下完成ConcurrentHashMap。
      大多数人都知道目前的ForkJoin 框架有两部分组成,基本ForkJoin{Pool,Task}框架,以及基于这个基本框架的并行集合(目前只有ParallelArray)。我考虑只把基本框架集成进JDK,把并行集合部分作为非JDK的包继续开发。这样做可以避免暴露接口(IntAndLongToInt 等96个接口)和表达式问题(闭包等),而且要把这些加入JDK也需要艰难的讨论。推迟加入可以有更多的时间来激励开发和使用并发集合的包,同时也可以有时间让IDE,语言扩展和另外的JVM语言来支持。
       同时我已经开始审阅把ForkJoin和Executor集成起来。ForkJoinPool会实现Executor的服务,ForkJoinTask会实现Future。(使之成为可能的主要思想是让控制阻塞和创建备用线程之间保持并发)。这可以更好的满足在Fortress and X10使用(这两种语言编译后会运行在JVM上)。但它也开始构建人们想要但却未曾开始着手干的基础设施,比如创建一系列循环(非 ForkJoin类型),每个循环有时候会创建ForkJoin任务。

更多细节将继续(获得内部并行维护行之有效会慢),但只增加简单的基础框架到java.util.concurrent: 类 ForkJoinPool (类ForkJoinWorkerThread 仍会为高级使用者和性能调优者保留)和 抽象类ForkJoinTask,以及三个子类RecursiveAction,RecursiveTask, AsyncForkJoinAction(最新一次修订后是为了用来在不提供类的情况下,构建诸如BinaryAsyncAction的类)。

       我会等待你们对这些内容的意见和建议,之后再把这些内容到恰当的地方。(恰当的地方的意思是,我会把这内容整合进JSR66y, 然后加入
java.util.concurrent 包中).

(全文完)如果您喜欢此文请点赞,分享,评论。



您可能感兴趣的文章

相关 [java7 java util] 推荐:

Java7新语言特性

- zffl - Import
Java7发布有一段时间了,这几天升级了一下JDK,结果发现Eclipse3.7还没有支持JDK7. 这个需要稍微解释一下,可能有人不知道,Eclipse使用自己的Java编译器而不是JDK自带的javac. Eclipse自己的编译器就是ecj(Eclipse Compiler for Java),一般的Linux发行版都有eclipse-ecj这样的包.

Java7 java.util.concurrent 并发包计划

- - 并发编程网 - ifeve.com
原文链接, 译文链接,译者:DOM,校对:郑旭东.  Java7发布版本的具体计划应该开始了,之前经常有人问我们关于JSR166的后续计划包含哪些内容. 下面是目前暂定的内容,欢迎提出你们的见.    一个通用的内存屏障实现.   一个具有非阻塞,阻塞和同步接口的队列.   并发Hash Map,其键和值可以是弱引用或者软引用.

笔者带你剖析Java7.x新特性

- -
最近在ITeye上看见一些朋友正在 激烈讨论关于Java7.x的一些语法结构,所以笔者有些手痒,特此 探寻了7.x(此篇博文笔者使用的是目前最新版本的JDK-7u15)的一些 新特性分享给大家. 虽然目前很多开发人员至今还在沿用Java4.x(笔者项目至今沿用4.x),但这并不是成为不前进的 借口.

Java中的锁(Locks in Java)

- - 并发编程网 - ifeve.com
原文链接 作者:Jakob Jenkov 译者:申章 校对:丁一. 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂. 因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字( 译者注:这说的是Java 5之前的情况).

Java PaaS 对决

- 呆瓜 - IBM developerWorks 中国 : 文档库
本文为 Java 开发人员比较了三种主要的 Platform as a Service (PaaS) 产品:Google App Engine for Java、Amazon Elastic Beanstalk 和 CloudBees RUN@Cloud. 它分析了每种服务独特的技术方法、优点以及缺点,而且还讨论了常见的解决方法.

Java浮点数

- d0ngd0ng - 译言-电脑/网络/数码科技
Thomas Wang, 2000年3月. Java浮点数的定义大体上遵守了二进制浮点运算标准(即IEEE 754标准). IEEE 754标准提供了浮点数无穷,负无穷,负零和非数字(Not a number,简称NaN)的定义. 在Java开发方面,这些东西经常被多数程序员混淆. 在本文中,我们将讨论计算这些特殊的浮点数相关的结果.

Qt——转战Java?

- - 博客 - 伯乐在线
编者按:事实上,在跨平台开发方面,Qt仍是最好的工具之一,无可厚非,但Qt目前没有得到任何主流移动操作系统的正式支持. 诺基亚的未来计划,定位非常模糊,这也是令很多第三方开发者感到失望,因此将导致诺基亚屡遭失败的原因. Qt的主要开发者之一Mirko Boehm在博客上强烈讽刺Nokia裁了Qt部门的决定,称其为“绝望之举”,而非“策略变更”.

java 验证码

- - ITeye博客
// 创建字体,字体的大小应该根据图片的高度来定. // 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到. // randomCode用于保存随机产生的验证码,以便用户登录后进行验证. // 随机产生codeCount数字的验证码. // 得到随机产生的验证码数字. // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同.

Java异常

- - CSDN博客推荐文章
“好的程序设计语言能够帮助程序员写出好程序,但是无论哪种语言都避免不了程序员写出坏的程序.                                                                                                                          ----《Java编程思想》.

java面试题

- - Java - 编程语言 - ITeye博客
 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面. 抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节. 抽象包括两个方面,一是过程抽象,二是数据抽象.  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法. 对象的一个新类可以从现有的类中派生,这个过程称为类继承.