• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

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

技术杂谈 勤劳的小蚂蚁 3个月前 (01-25) 78次浏览 已收录 0个评论 扫描二维码


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 、 Subscription ,容器类 java.util.concurrent.Flow 、java.util.concurrent.SubmissionPublisher
  • CompletableFuture类加强,支持delays, timeout, subclassing 以及其它方法
  • 调优以及修改javadoc

参考文档


Java 8 和 Java 9中 concurrent 包有了一些改变, 本文对这些改变做了汇总。


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Java 8 和 Java 9 中并发工具的改变
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00