Java7 java.util.concurrent 并发包计划
JAVA 计划 util concurrent 发包
2023-09-11 14:16:10 时间
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中,
链接地址 http://gee.cs.oswego.edu/dl/concurrency-interest/index.html。
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。我想最新的版本应该是在这里
http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/src/jsr166y/ConcurrentReferenceHashMap.java?view=markup
我们推迟集成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任务。
我会等待你们对这些内容的意见和建议,之后再把这些内容到恰当的地方。(恰当的地方的意思是,我会把这内容整合进JSR66y, 然后加入 java.util.concurrent 包中). 文章转自 并发编程网-ifeve.com
JUC:java.util.concurrent理解与使用示例 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。
java.util.concurrent解析——AbstractQueuedSynchronizer综述 尽管JVM在并发上已经做了很多优化工作,如偏向锁、轻量级锁、自旋锁等等。但是基于`Synchronized` `wait` `notify`实现的同步机制还是无法满足日常开发中。原生同步机制在时间和空间上的开销也一直备受诟病。
java.util.concurrent解析——ThreadPoolExecutor源码解析 任何一种语言、框架,线程都是非常重要的一部分。要想实现异步就需要通过异步线程,但是频繁地创建销毁线程会带来较大的性能开销,而线程池就是为解决这一问题而出现的
更多细节将继续(获得内部并行维护行之有效会慢),但只增加简单的基础框架到java.util.concurrent: 类 ForkJoinPool (类ForkJoinWorkerThread 仍会为高级使用者和性能调优者保留)和 抽象类ForkJoinTask,以及三个子类RecursiveAction,RecursiveTask, AsyncForkJoinAction(最新一次修订后是为了用来在不提供类的情况下,构建诸如BinaryAsyncAction的类)。
我会等待你们对这些内容的意见和建议,之后再把这些内容到恰当的地方。(恰当的地方的意思是,我会把这内容整合进JSR66y, 然后加入 java.util.concurrent 包中). 文章转自 并发编程网-ifeve.com
JUC:java.util.concurrent理解与使用示例 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。
java.util.concurrent解析——AbstractQueuedSynchronizer综述 尽管JVM在并发上已经做了很多优化工作,如偏向锁、轻量级锁、自旋锁等等。但是基于`Synchronized` `wait` `notify`实现的同步机制还是无法满足日常开发中。原生同步机制在时间和空间上的开销也一直备受诟病。
java.util.concurrent解析——ThreadPoolExecutor源码解析 任何一种语言、框架,线程都是非常重要的一部分。要想实现异步就需要通过异步线程,但是频繁地创建销毁线程会带来较大的性能开销,而线程池就是为解决这一问题而出现的
相关文章
- Java7 java.util.concurrent 并发包计划
- Java Collection笔记之ArrayList
- java: Comparable比较器,定义二叉操作类
- Java实现图形化计算器
- java实现洛谷P1308统计单词数
- java实现第七届蓝桥杯方格填数
- Java实现 蓝桥杯 历届试题 横向打印二叉树
- Java实现 蓝桥杯VIP 算法提高 Quadratic Equation
- Java实现 蓝桥杯VIP 算法提高 高精度乘法
- Java实现 蓝桥杯 算法训练 矩阵乘法
- Java虚拟机详解02----JVM内存结构
- 【JAVA秒会技术之秒杀面试官】秒杀Java面试官——集合篇(一)
- 【JAVA】 01-Java基础知识
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- java.lang.OutOfMemoryError: Java heap space 解决方法
- macos:安装java 17.0.6(android studio报错:Unable to locate a Java Runtime.)
- Java数据库篇4——表的约束
- 使用Java标准的java.util.EventListener实现观察者-发布者设计模式
- Atitit java播放器调音速率快慢的实现 目录 1.1. 原理 本质上是改变采样率即可1 2. 使用Java增加/降低AudioInputStream的音频播放速度(Increase/dec
- 【Java】java 环境配置(详细教程)
- 【java】Java 包(package)
- 解决idea出现的java.lang.OutOfMemoryError: Java heap space的问题
- 详解jvm之java类加载机制和类加载器(ClassLoader) 深入理解Java类加载器(ClassLoader) 如何自定义类加载器 深入说明双亲委派 双亲委派模型的破坏者-线程上下文类加载器
- java 程序运行的基础知识【Java bytecode】
- 在java类中,是先执行类的构造函数还是先执行类的私有非静态变量
- java移位运算符具体解释
- Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释
- java - 详解 Java 17 中新推出的密封类
- 【java】Java线程池实现原理及业务中的实践
- JAVA开发讲义(二)-Java程序设计之数据之谜三