A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



Java 8 和 Java 9 中并发工具的改变


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中的新类
为了并发计算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 接口的加强等。
  • 支持Reactive Streams publish-subscribe框架,四个接口 Processor 、 Publisher 、 Subscriber 、 Subion ,容器类 java.util.concurrent.Flow 、java.util.concurrent.SubmissionPublisher
  • CompletableFuture类加强,支持delays, timeout, subclassing 以及其它方法
  • 调优以及修改javadoc
参考文档
Java 8 和 Java 9中 concurrent 包有了一些改变, 本文对这些改变做了汇总。

11 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报

合肥校区蒸蒸日上
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
学习了
回复 使用道具 举报
回复 使用道具 举报
朱浩 来自手机 黑马粉丝团 2018-5-3 18:01:24
10#
6666
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马