Java 8 和 Java 9部分区别
2024-08-30 22:20:39
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 中 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
最新文章
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
- angular2系列教程(三)components
- 如何在多线程leader-follower模式下正确的使用boost::asio。
- Codeforces Round #327 (Div. 2) B. Rebranding C. Median Smoothing
- Nodejs&;express+mongodb完成简单用户登录(即Nodejs入门)
- 烂泥:Linux源码包制作RPM包之Apache
- O(1) 查询gcd
- centos6安装redis
- [React] React Fundamentals: Component Lifecycle - Mounting Basics
- python 整型--《Python 3程序开发指南》笔记
- Ueditor和CKeditor 两款编辑器的使用与配置
- 解决vmware卡的要死
- 【LeetCode】423. Reconstruct Original Digits from English
- 201521123070 《JAVA程序设计》第14周学习总结
- Struts2的拦截器配置
- JavaScript 是如何工作的:JavaScript 的内存模型
- 接口转换 数据库列表的内容 显示在datagrid
- zookeeper各种报错、原因及解决方法汇总(持续更新)
- Java 泛型 <;? super T>; 中 super 怎么 理解?与 <; ? extends T>;有何不同?
- Guava包学习---Maps
热门文章
- Eclipse或SVN—怎样在Eclipse中安装SVNclient插件
- Python开发【第*篇】【Socket网络编程】
- MySQL通过函数获取字符串汉字拼音首字母大写字符串
- MFC中SliderCtrl控件的使用
- searchView 颜色 icon 设置
- Java序列化系列教程(下)
- Yii2-redis安装配置
- bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声【单调栈】
- bzoj 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛【dp+树状数组+hash】
- mysql百万数据分页查询速度