2017第33周四JDK8并发
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
- 高并发Java(1):前言
- 高并发Java(2):多线程基础
- 高并发Java(3):Java内存模型和线程安全
- 高并发Java(4):无锁
- 高并发Java(5):JDK并发包1
- 高并发Java(6):JDK并发包2
- 高并发Java(7):并发设计模式
- 高并发Java(8):NIO和AIO
- 高并发Java(9):锁的优化和注意事项
- 高并发Java(10):JDK8对并发的新支持
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并发的更多相关文章
- 并发设计模式和锁优化以及jdk8并发新特性
1 设计模式 (1) 单例模式 保证一个类只能一个对象实现.正常的单例模式分为懒汉式和饿汉式,饿汉式就是把单例声明称static a=new A(),系统第一次调用的时候生成(包括调用该类的其他静态资 ...
- Learning-Python【33】:并发编程之多进程
一.multiprocessing 模块介绍 Python 中的多线程无法利用多核优势,如果想要充分地使用多核 CPU 的资源(os.cpu_count()查看),在 Python 中大部分情况需要使 ...
- [转]教你十分钟下载并破解IntelliJ IDEA(2017)
来源:http://www.itwendao.com/article/detail/400687.html 温馨提示:IntelliJ IDEA(2017)需要安装JDK8以上才能运行 如果你是JDK ...
- 【多线程系列】AQS CAS简单介绍
一.什么是CAS CAS(Compare And Swap),即比较并交换.是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V).预期原值(A)和新值(B). ...
- python基础之2
1.模块 sys模块注意:python文件的文件名一定不能和下面的要导入的模块同名,如:sys_mokuai.py windows下的python3里直接运行: import sys ----- ...
- Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)
一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...
- Linux实战教学笔记30:Nginx反向代理与负载均衡应用实践
1.1 集群简介 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器.这些服务器之间可 ...
- Net环境下比较流行的ORM框架对比
个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操作数据库之外,大量的书籍中都是讲述使 ...
- 构建Docker+Jenkins持续集成环境
docker和Jenkins不是什么新东西了,两者结合也不是什么稀奇的事情,也已经有很多Jenkins和docker相结合的文章,此文仅为自己的一点心得实践,如有不对的地方,欢迎大家纠正. 先贴上大致 ...
随机推荐
- hihoCoder挑战赛31
#1595 : Numbers 时间限制:8000ms 单点时限:1000ms 内存限制:256MB 描述 给定n个整数常数c[1], c[2], ..., c[n]和一个整数k.现在需要给2k个整数 ...
- P1629 邮递员送信(未完成)
题目描述 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要一定的时间.这个邮递员每 ...
- 一个不错的学习android的网站
http://androiddoc.qiniudn.com/guide/topics/ui/overview.html,最近想学下android的开发,找了一下网上的资料,中文的说的觉得太概括,看不太 ...
- centos7常见的操作
centos7的网络IP地址配置文件在 /etc/sysconfig/network-scripts 文件夹下, 查看当前网卡名称 ip ad li ens33网卡对应的配置文件为ifcfg-ens ...
- nginx的缓存设置提高性能
对于网站的图片,尤其是新闻站, 图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后, 图片缓存在用户的浏览器端,且时间比较长的缓存. 可以, 用到 nginx的expires设置 . ...
- laravel 运行migrate报错 1071 Specified key was too long
转自:https://segmentfault.com/a/1190000008416200 laravel运行命令migrate时报错: 1071 Specified key was too lo ...
- nyoj124-中位数
中位数 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 一组数据按从小到大的顺序依次排列,处在中间位置的一个数叫做中位数. 比如 1 5 10 11 9 其中位数就是9 ...
- [luogu1600 noip2016] 天天爱跑步 (树上差分)
题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵 ...
- 03.IO读写-1.IO介绍
1 文件操作介绍 in: 输入,读入.从硬盘中读到内存 out: 输出.从内存写到硬盘 文件的作用: 数据存储 2 文件的打开与关闭 2.1 打开文件 在Python,使用open函数,可以打开一个已 ...
- Linux 字符设备驱动简单总结(转)
http://my.oschina.net/u/1169027/blog/191538