原文发表于 2013 年 8 月 28 日 由 三石 根据前文描述的Doug Lea的理论基础,在JDK1.7中已经给出了Fork Join的实现.在Java SE 7的API中,多了ForkJoinTask.ForkJoinPool.ForkJoinWorkerThread.RecursiveAction. RecursiveTask这样5个类.本文就对JDK1.7中增加这5个工具类实现做简要分析. 0. JDK中ForkJoin实现概述 在JavaSE7的API和JDK1.7中,分别集成了支…
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp85   根据前文描述的Doug Lea的理论基础,在JDK1.7中已经给出了Fork Join的实现.在Java SE 7的API中,多了ForkJoinTask.ForkJoinPool.ForkJoinWorkerThread.RecursiveAction.RecursiveTask这样5个类.本文就对JDK1.7中增加这5个工具类实现做简要分析. 0. JDK中…
前两篇文章已经对Fork Join的设计和JDK中源码的简要分析.这篇文章,我们来简单地看看我们在开发中怎么对JDK提供的工具类进行应用,以提高我们的需求处理效率. Fork Join这东西确实用好了能给我们的任务处理提高效率,也为开发带来方便.但Fork Join不是那么容易用好的,我们先来看几个例子(反例). 0. 反例错误分析 我们先来看看这篇文章中提供的例子:http://www.iteye.com/topic/643724 (因为是反例,就不提供超链接了,只以普通文本给出URL) 这篇…
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp86   前两篇文章已经对Fork Join的设计和JDK中源码的简要分析.这篇文章,我们来简单地看看我们在开发中怎么对JDK提供的工具类进行应用,以提高我们的需求处理效率. Fork Join这东西确实用好了能给我们的任务处理提高效率,也为开发带来方便.但Fork Join不是那么容易用好的,我们先来看几个例子(反例). 0. 反例错误分析 我们先来看看这篇文章中提供的…
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp83 这篇我们来简要了解一下JavaSE7中提供的一个新特性 -- Fork Join 框架. 0. 处理器发展和需求背景 回想一下并发开发的初衷,其实可以说是有两点,或者说可以从两个方面看. 对于单核的处理器来说,在进行IO操作等比较费时的操作进行时,如果执行任务的方式是单任务的,那么CPU将会"空转",知道IO操作结束.如果有多任务的调度机制,则在一个任务不…
原文:发表于 2013 年 8 月 26 日 由 三石 0. 处理器发展和需求背景 回想一下并发开发的初衷,其实可以说是有两点,或者说可以从两个方面看. 对于单核的处理器来说,在进行IO操作等比较费时的操作进行时,如果执行任务的方式是单任务的,那么CPU将会“空转”,直到IO操作结束.如果有多任务的调度机制,则在一个任务不需要CPU支持的时候,CPU可以被调度处理其他任务.简单地讲,并发可以提高CPU计算资源的利用率. 对于多核,或者多个计算资源的情况下,并发可以在某种程度上达到“并行”,即同时…
核心术语 RingBuffer(容器): 被看作Disruptor最主要的组件,然而从3.0开始RingBuffer仅仅负责存储和更新在Disruptor中流通的数据.对一些特殊的使用场景能够被用户(使用其他数据结构)完全替代. Sequence(槽位置): Disruptor使用Sequence来表示一个特殊组件处理的序号.和Disruptor一样,每个消费者(EventProcessor)都维持着一个Sequence.大部分的并发代码依赖这些Sequence值的运转,因此Sequence支持…
1.单线程tornado.web:基础web框架模块tornado.ioloop:核心IO循环模块,高效的基础.封装了:1.asyncio 协程,异步处理2. epoll模型:水平触发(状态改变就询问,select(),poll()), 边缘触发(一直询问,epoll())3.poll 模型:I/O多路复用技术4.BSD(UNIX操作系统中的一个分支的总称)的kqueue(kueue是在UNIX上比较高效的IO复用技术) epoll和kqueue的区别如下: 'epoll'仅适用于文件描述符,在…
Disruptor是一款java高性能无锁并发处理框架.和JDK中的BlockingQueue有相似处,但是它的处理速度非常快!!!号称“一个线程一秒钟可以处理600W个订单”(反正渣渣电脑是没体会到). Disruptor功能十分强大,比如消费者阻塞等待:生产者-消费者一对一.一对多.多对一.多对多:构建消费者串/并行处理链等等. 具体的概念模型可以参考:https://www.cnblogs.com/haiq/p/4112689.html 下面是我基于Disruptor框架封装的工具.采用f…
版权声明:原创作品,谢绝转载!否则将追究法律责任. Disruptor框架是一个优秀的并发框架,利用RingBuffer中的预分配内存实现内存的可重复利用,降低了GC的频率. 具体关于Disruptor的原理,参见:http://ifeve.com/disruptor/,本文不在赘述. 在Disruptor的使用中,偶尔会出现调用了shutdown函数但程序并未终止的现象.在网上已有的文章中并没有对该问题的分析,本文对此现象进行总结和说明: 例子:相关的Event.EventHandler.Pr…