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 包有了一些改变, 本文对这些改变做了汇总。