Java 8 和 Java 9中 concurrent
包有了一些改变, 本文对这些改变做了汇总。
Java 8 中 Concurrent package的改变
java.util.concurrent中新的类和接口
增加了两个新接口和4个新类:
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中的新类
为了并发计较count、sum, 新引入了 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
接口的增强等。
Processor
、 Publisher
、 Subscriber
、 Subscription
,容器类 java.util.concurrent.Flow 、java.util.concurrent.SubmissionPublisher参考文档
Java 8 和 Java 9中 concurrent
包有了一些改变, 本文对这些改变做了汇总。