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

2018 年 3 月 16 日 ImportNew

(点击上方公众号,可快速关注)


来源:鸟窝,

colobu.com/2018/03/12/Concurrency-Utilities-Enhancements-in-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 、 Subscription ,容器类 java.util.concurrent.Flow 、java.util.concurrent.SubmissionPublisher

  • CompletableFuture类加强,支持delays, timeout, subclassing 以及其它方法

  • 调优以及修改javadoc


参考文档


  • Concurrency Utilities Enhancements in Java SE 8

    https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html

  • Java 9′s other new enhancements, Part 6: Concurrency

    https://www.javaworld.com/article/3198904/learn-java/java-9s-other-new-enhancements-part-6-concurrency.html

  • The Essential Java 9 Feature You Probably Never Heard Of

    https://blog.takipi.com/the-essential-java-9-feature-you-probably-never-heard-of/

  • Java 9′s other new enhancements

    https://www.infoworld.com/article/3169289/java/java-9s-other-new-enhancements-part-2.html

  • JEP 266: More Concurrency Updates

    http://openjdk.java.net/jeps/266

  • Java 9 series: Concurrency Updates

    https://www.voxxed.com/2016/10/java-9-series-concurrency-updates/


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


看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

登录查看更多
0

相关内容

Java 是一门编程语言,拥有跨平台、面向对象、泛型编程等特性。
【Manning新书】现代Java实战,592页pdf
专知会员服务
98+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【实用书】Python数据科学从零开始,330页pdf
专知会员服务
140+阅读 · 2020年5月19日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【新书】Python中的经典计算机科学问题,224页PDF
专知会员服务
51+阅读 · 2019年12月31日
机器学习在材料科学中的应用综述,21页pdf
专知会员服务
47+阅读 · 2019年9月24日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
PHP使用Redis实现订阅发布与批量发送短信
安全优佳
7+阅读 · 2019年5月5日
Python奇淫技巧,5个数据可视化工具
机器学习算法与Python学习
7+阅读 · 2019年4月12日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
刚开始学编程?这几款小工具能让你事半功倍
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
大数据流处理平台的技术选型参考
架构文摘
4+阅读 · 2018年3月14日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
A survey on deep hashing for image retrieval
Arxiv
14+阅读 · 2020年6月10日
3D Deep Learning on Medical Images: A Review
Arxiv
12+阅读 · 2020年4月1日
A Survey on Deep Transfer Learning
Arxiv
11+阅读 · 2018年8月6日
Arxiv
11+阅读 · 2018年5月13日
VIP会员
相关VIP内容
【Manning新书】现代Java实战,592页pdf
专知会员服务
98+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【实用书】Python数据科学从零开始,330页pdf
专知会员服务
140+阅读 · 2020年5月19日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【新书】Python中的经典计算机科学问题,224页PDF
专知会员服务
51+阅读 · 2019年12月31日
机器学习在材料科学中的应用综述,21页pdf
专知会员服务
47+阅读 · 2019年9月24日
相关资讯
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
PHP使用Redis实现订阅发布与批量发送短信
安全优佳
7+阅读 · 2019年5月5日
Python奇淫技巧,5个数据可视化工具
机器学习算法与Python学习
7+阅读 · 2019年4月12日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
刚开始学编程?这几款小工具能让你事半功倍
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
大数据流处理平台的技术选型参考
架构文摘
4+阅读 · 2018年3月14日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
Top
微信扫码咨询专知VIP会员