Java 8在Lambda表达式、接口默认方式、新的日期API等方面引入的新特性广受关注,同时在并发编程方面也做出了大量改进。以往的几个Java版本都对java.util.concurrent做了不同程度的增强,比如Java 7的Fork/Join框架,而Java 8则进一步在java.util.concurrent下增加了新的接口、类与方法。
java.util.concurrent 中增加了两个接口四个类:

1.CompletableFuture.AsynchronousCompletionTask接口:标识在async方法中执行的异步任务。

2.CompletionStage<T>接口:异步计算中可能出现的一个阶段,也就是说当一个CompletionStage 完成时执行的动作或计算。

3.CompletableFuture<T>类:一个可以确定完成状态的Future。

4.ConcurrentHashMap.KeySetView<K,V>类:ConcurrentHashMap 的键的集合视图。

5.CountedCompleter<T>类:一个在没有其他action等待的情况下,会执行一个完成action的 ForkJoinTask 。

6.CompletionException类:异常类。

ConcurrentHashMap增加新方法

在Java 8中,集合框架基于streams和Lambda表达式做了全新调整:

ConcurrentHashMap增加了30多个方法,包括foreach系列(forEach,forEachKey, forEachValue, forEachEntry)、search系列(search, searchKeys, searchValues, searchEntries)、reduce系列(reduce, reduceToDouble, reduceToLong)以及mappingCount 、newKeySet等方法, 增强后的ConcurrentHashMap更适合做缓存了。

java.util.concurrent.atomic包的改进

java.util.concurrent.atomic包中增加了四个新的类:DoubleAccumulator、DoubleAdder、LongAccumulator、 LongAdder,这四个类的作者是并发大师Doug lea。
ForkJoinPool中增加新方法

Java 8除了对Fork-Join框架做了优化外,也为ForkJoinPool增加了两个静态方法:getCommonPoolParallelism() 、commonPool(),Oleg Shelajev在这篇博文中对Fork/Join做了详细的介绍并做了测试以比较其在JDK7、JDK8中的性能。

增加StampedLock类

StampedLock是一种新型锁的实现,很可能在大多数场景都可以替代ReentrantReadWriteLock。它为读写操作提供了三种模式:Writing、ReadingOptimistic、 Reading。

http://tech.it168.com/a2014/0421/1615/000001615329.shtml

http://www.importnew.com/21358.html

首先Java的并行API演变历程是从:
1、1.0-1.4版本中的java.lang.Thread。
2、1.5版本中的java.util.concurrent。
3、1.6版本中的Phasers等。
4、1.7版本中的Fork/Join框架。
5、1.8版本中的Lambda。

http://blog.163.com/liuyong_xiaxia/blog/static/174355255201581561821988/

JDK8 lambdas 异常扩展:https://github.com/jOOQ/jOOL

2017第33周四JDK8并发的更多相关文章

  1. 并发设计模式和锁优化以及jdk8并发新特性

    1 设计模式 (1) 单例模式 保证一个类只能一个对象实现.正常的单例模式分为懒汉式和饿汉式,饿汉式就是把单例声明称static a=new A(),系统第一次调用的时候生成(包括调用该类的其他静态资 ...

  2. Learning-Python【33】:并发编程之多进程

    一.multiprocessing 模块介绍 Python 中的多线程无法利用多核优势,如果想要充分地使用多核 CPU 的资源(os.cpu_count()查看),在 Python 中大部分情况需要使 ...

  3. [转]教你十分钟下载并破解IntelliJ IDEA(2017)

    来源:http://www.itwendao.com/article/detail/400687.html 温馨提示:IntelliJ IDEA(2017)需要安装JDK8以上才能运行 如果你是JDK ...

  4. 【多线程系列】AQS CAS简单介绍

    一.什么是CAS CAS(Compare And Swap),即比较并交换.是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V).预期原值(A)和新值(B). ...

  5. python基础之2

    1.模块 sys模块注意:python文件的文件名一定不能和下面的要导入的模块同名,如:sys_mokuai.py windows下的python3里直接运行: import sys    ----- ...

  6. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  7. Linux实战教学笔记30:Nginx反向代理与负载均衡应用实践

    1.1 集群简介 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器.这些服务器之间可 ...

  8. Net环境下比较流行的ORM框架对比

    个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操作数据库之外,大量的书籍中都是讲述使 ...

  9. 构建Docker+Jenkins持续集成环境

    docker和Jenkins不是什么新东西了,两者结合也不是什么稀奇的事情,也已经有很多Jenkins和docker相结合的文章,此文仅为自己的一点心得实践,如有不对的地方,欢迎大家纠正. 先贴上大致 ...

随机推荐

  1. A - I Wanna Be the Guy

    Problem description There is a game called "I Wanna Be the Guy", consisting of n levels. L ...

  2. 从Android源码分析View绘制

    在开发过程中,我们常常会来自定义View.它是用户交互组件的基本组成部分,负责展示图像和处理事件,通常被当做自定义组件的基类继承.那么今天就通过源码来仔细分析一下View是如何被创建以及在绘制过程中发 ...

  3. 安装android驱动解决device not found

    安装android驱动,解决device not found 0.1问题环境 windows10,android studio /eclipse,sdk ,jdk(其他windows也可用) 1.0  ...

  4. 最小环 hdu1599 poj1734

    最小环用floyd改编. hdu1599特殊一些.要求至少有三个不同的点,并且除了起点与终点重合外,中间不能有环.有点很奇怪,最大值不能为0x3f3f3f3f. poj1374就没那么讲究. //hd ...

  5. Openwrt PPTP Server笔记

    1.安装PPTP opkg updateopkg install kmod-mppeopkg install pptpd 2./etc/pptpd.conf option /etc/ppp/optio ...

  6. jq图片懒加载

    jQuery图片延迟加载插件jQuery.lazyload,使用延迟加载在可提高网页下载速度.在某些情况下,它也能帮助减轻服务器负载. 使用方法 引用jquery和jquery.lazyload.js ...

  7. 取/etc/password文件最后一个单词的最后一个字符

    三种方法都可以 [root@localhost ~]# sed -n "1,5 s#.*\(.\)#\1#p" /etc/passwd [root@localhost ~]# se ...

  8. Node笔记(2)

    写一个可以生成多层级文件夹的函数 const fs = require('fs'); const path = require('path'); function mkdirs (pathname,c ...

  9. 封装自己的jquery框架

    jQuery is a fast small JavaScript library 如何封装自己的jQuery <script> // 这里使用沙箱模式,可以防止全局污染 (functio ...

  10. 训练1-T

    一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数.求所有小于等于N的与7无关的正整数的平方和. 例如:N = 8,<= 8与7无关的数包括:1 2 ...