随遇而安

随遇而安 关注TA

额,假装这里有签名...

随遇而安

随遇而安

关注TA

额,假装这里有签名...

  •  某地区
  • 工程师
  • 写了837,964字

最近回复

该文章投稿至Nemo社区   Java  板块 复制链接


Java 8 和 Java 9 中并发工具的改变(转载)

发布于 2018/03/30 18:37 1,272浏览 0回复 2,068

原文出处:鸟窝


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

Java 8 中 Concurrent package的改变

java.util.concurrent中新的类和接口

增加了两个新接口和4个新类:

  1. 接口 CompletableFuture.AsynchronousCompletionTask
  2. 接口 CompletionStage
  3. 类 CompletableFuture
  4. 类 ConcurrentHashMap.KeySetView
  5. 类 CountedCompleter
  6. 类 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 接口的加强等。

参考文档

  1. Concurrency Utilities Enhancements in Java SE 8
  2. Java 9′s other new enhancements, Part 6: Concurrency
  3. The Essential Java 9 Feature You Probably Never Heard Of
  4. Java 9′s other new enhancements
  5. JEP 266: More Concurrency Updates
  6. Java 9 series: Concurrency Updates

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

点赞(0)
点了个评