Java7 java.util.concurrent 并发包计划

简介:

原文链接译文链接,译者: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 包中).
文章转自  并发编程网-ifeve.com
目录
相关文章
|
运维 搜索推荐 Java
Java并发JUC(java.util.concurrent)锁
Java并发JUC(java.util.concurrent)锁
Java并发JUC(java.util.concurrent)锁
|
缓存 运维 Java
Java并发JUC(java.util.concurrent)集合不安全
Java并发JUC(java.util.concurrent)集合不安全
Java并发JUC(java.util.concurrent)集合不安全
|
运维 Java 大数据
Java并发JUC(java.util.concurrent)线程池
Java并发JUC(java.util.concurrent)线程池
Java并发JUC(java.util.concurrent)线程池
|
运维 Java 大数据
Java并发JUC(java.util.concurrent)ForkJoin/异步回调
Java并发JUC(java.util.concurrent)ForkJoin/异步回调
Java并发JUC(java.util.concurrent)ForkJoin/异步回调
|
存储 运维 Java
Java并发JUC(java.util.concurrent)JMM内存模型
Java并发JUC(java.util.concurrent)JMM内存模型
Java并发JUC(java.util.concurrent)JMM内存模型
|
缓存 运维 Java
Java并发JUC(java.util.concurrent)Volatile\单例模式\CAS\原子引用
Java并发JUC(java.util.concurrent)Volatile\单例模式\CAS\原子引用
Java并发JUC(java.util.concurrent)Volatile\单例模式\CAS\原子引用
|
安全 Java 索引
【Java 集合】Java 集合的线程安全性 ( 加锁同步 | java.utils 集合 | 集合属性 | java.util.concurrent 集合 | CopyOnWrite 机制 )
【Java 集合】Java 集合的线程安全性 ( 加锁同步 | java.utils 集合 | 集合属性 | java.util.concurrent 集合 | CopyOnWrite 机制 )
351 0
|
缓存 算法 Java
【JAVA秒会技术之多线程】多线程java.util.concurrent详解
一、多线程 1、操作系统有两个容易混淆的概念,进程和线程。 进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。 线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进程中的线程共用相
2111 0
|
存储 Java 编译器
【JAVA秒会技术之多线程】Java 并发工具包 java.util.concurrent 用户指南
1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。本文我将带你一一认识 java.util.concurrent 包里的这些类,然后你可以尝试着
1885 0
|
存储 Java 编译器
Java 并发工具包 java.util.concurrent 用户指南
译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html。
1024 0