Java 8 和 Java 9 中 concurrent 包有了一些改变, 本文对这些改变做了汇总
Java 8 中 Concurrent package 的改变
java.util.concurrent 中新的类和接口
增加了两个新接口和 4 个新类:
接口 CompletableFuture.AsynchronousCompletionTask
接口 CompletionStage
类 CompletableFuture
类 ConcurrentHashMap.KeySetView
类 CountedCompleter
类 CompletionException
java.util.concurrent.ConcurrentHashMap 的新方法
集合框架 在 Java 8 中做了修订, 基于 stream 和 lambda 表达式 添加了很多聚合方法因此 ConcurrentHashMap 也引入了 30 几个新方法, 包括各种 foreach 方法 (forEach , forEachKey , forEachValue , 和 forEachEntry) 搜索方法 ( search , searchKeys , searchValues , 和 searchEntries ) 和 reduction 方法( reduce , reduceToDouble , reduceToLong 等)
也添加了一些其它方法, 比如 mappingCount 和 newKeySet 并且当前版本的 ConcurrentHashMap 的更适合做 cache, 因为增加了当键值不存在的时候的检查方法
java.util.concurrent.atomic 中的新类
为了并发计算 countsum, 新引入了 DoubleAccumulator , DoubleAdder , LongAccumulator , LongAdder 类, 比 Atomic 提供更高的吞吐率
java.util.concurrent.ForkJoinPool 的新方法
静态的 commonPool() 新加入, 可以为 ForkJoinTask 提供通用池
两个方法
getCommonPoolParallelism()
和 commonPool() 提供不同的配置
新类 java.util.concurrent.locks.StampedLock
新类 StampedLock 提供三种模式(写, 读, 乐观读), 用来提高性能
Java 9 中 Concurrent package 的改变
主要是 JEP 266: More Concurrency Updates , 包括 publish-subscribe, CompletableFuture 接口的加强等
支持 Reactive Streams publish-subscribe 框架, 四个接口 Processor Publisher Subscriber Subscription , 容器类 java.util.concurrent.Flow java.util.concurrent.SubmissionPublisher
CompletableFuture 类加强, 支持 delays, timeout, subclassing 以及其它方法
调优以及修改 javadoc
参考文档
- Concurrency Utilities Enhancements in Java SE 8
- Java 9's other new enhancements, Part 6: Concurrency
- The Essential Java 9 Feature You Probably Never Heard Of
- Java 9's other new enhancements
- JEP 266: More Concurrency Updates
- Java 9 series: Concurrency Updates
来源: http://www.tuicool.com/articles/nmyyIjy