- 博客(18)
- 收藏
- 关注
原创 Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator
Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator作者:大飞 功能简介:LongAdder是jdk1.8提供的累加器,基于Striped64实现。它常用于状态采集、统计等场景。AtomicLong也可以用于这种场景,但在线程竞争激烈的情况下,LongAdder要比AtomicLong拥有更高的吞吐量,但会耗费更多的内存空...
2015-11-27 19:49:59 229
原创 Jdk1.8 JUC源码增量解析(1)-atomic-Striped64
Jdk1.8 JUC源码增量解析(1)-atomic-Striped64作者:大飞 功能简介:Striped64是jdk1.8提供的用于支持如Long累加器,Double累加器这样机制的基础类。Striped64的设计核心思路就是通过内部的分散计算来避免竞争(比如多线程CAS操作时的竞争)。Striped64内部包含一个基础值和一个单元哈希表。没有竞争的情况下,要累...
2015-11-27 19:41:08 292 1
原创 Jdk1.7 JUC源码增量解析(6)-Phaser
Jdk1.7 JUC源码增量解析(6)-Phaser作者:大飞 功能简介:Phaser是jdk1.7提供的类似于CyclicBarrier和CountDownLatch的同步机制。它支持更灵活的使用方式:1.使用过程中可以随时注册和注销参与者;2.不同于CyclicBarrier,分离出"到达"和"等待"机制;3.支持结束,默认情况下,当没有参与者的时候Phaser就结...
2015-11-26 14:26:24 282
原创 Jdk1.7 JUC源码增量解析(5)-ForkJoin-ForkJoin框架其他过程及方法
Jdk1.7 JUC源码增量解析(5)-ForkJoin-ForkJoin框架其他过程及方法作者:大飞 概述:这篇会看一下ForkJoin框架的其他过程,如取消任务、关闭Pool,以及前面没分析到一些方法。 源码分析: 前面我们看到,ForkJoinTask本身也是Future的实现,所以也会有取消过程,看下实现: public bool...
2015-11-21 23:14:35 210
原创 Jdk1.7 ForkJoin框架源码解析汇总
Jdk1.7 ForkJoin框架源码解析汇总 Jdk1.7 JUC源码增量解析(2)-ForkJoin-框架概览 Jdk1.7 JUC源码增量解析(3)-ForkJoin-非ForkJoin任务的执行过程 Jdk1.7 JUC源码增量解析(4)-ForkJoin-ForkJoin任务的fork/join过程 Jdk1.7 JUC源码增量解析(5)-For...
2015-11-20 16:54:36 156
原创 Jdk1.7 JUC源码增量解析(4)-ForkJoin-ForkJoin任务的fork/join过程
Jdk1.7 JUC源码增量解析(4)-ForkJoin-ForkJoin任务的fork/join过程作者:大飞 概述:这篇通过分析一个ForkJoin任务的执行过程来分析ForkJoin的相关代码,主要侧重于分裂(fork)/合并(join)过程。 源码分析: 还是先看一个代码示例,这个示例介绍篇出现过,这里只贴出任务代码:publ...
2015-11-20 16:47:20 223
原创 Jdk1.7 JUC源码增量解析(3)-ForkJoin-非ForkJoin任务的执行过程
Jdk1.7 JUC源码增量解析(3)-ForkJoin-非ForkJoin任务的执行过程作者:大飞 概述:这篇通过分析一个非ForkJoin(Runnable或者Callable)任务的执行过程来分析ForkJoin的相关代码,注意这里说的非ForkJoin任务实际上也是ForkJoinTask,只是没有分裂(fork)/合并(join)过程。 源码分析:...
2015-11-20 11:50:25 282
原创 Jdk1.7 JUC源码增量解析(2)-ForkJoin-框架概览
Jdk1.7 JUC源码增量解析(2)-ForkJoin-框架概览作者:大飞 ForkJoin框架是什么? ForkJoin框架是jdk1.7提供的一个并行计算框架。ForkJoin框架能干什么? 首先ForkJoin框架是针对一些符合ForkJoin模型的任务而设计的,那什么是ForkJoin模型呢?看个图先: ...
2015-11-19 17:31:21 171
原创 Jdk1.7 JUC源码增量解析(1)-FutureTask
Jdk1.7 JUC源码增量解析(1)-FutureTask作者:大飞 功能简介:FutureTask是一种异步任务(或异步计算),举个栗子,主线程的逻辑中需要使用某个值,但这个值需要负责的运算得来,那么主线程可以提前建立一个异步任务来计算这个值(在其他的线程中计算),然后去做其他事情,当需要这个值的时候再通过刚才建立的异步任务来获取这个值,有点并行的意思,这样可以缩短整...
2015-11-12 18:30:15 275
原创 Java与IEEE754浅浅谈
Java与IEEE754浅浅谈作者:大飞 怎么用二进制来表示小数呢? 假设我们要用二进制来表示小数5.5,怎么搞? 按照常规思路,首先用二进制表示一下5,是101,那5.5岂不就是101.101(呵呵哒...)。 我们来看下分解过程,5=4+1,也就是1*22 + 0*21 + 1*20,即1...
2015-11-11 17:39:38 628
原创 disruptor-3.3.2源码解析汇总
disruptor-3.3.2源码解析汇总 disruptor-3.3.2源码解析(1)-序列 disruptor-3.3.2源码解析(2)-队列 disruptor-3.3.2源码解析(3)-发布事件 disruptor-3.3.2源码解析(4)-处理事件 disruptor-3.3.2源码解析(5)-框架支持 完毕! 欢迎加入扣扣群一...
2015-11-10 11:18:44 146
原创 disruptor-3.3.2源码解析(5)-框架支持
disruptor-3.3.2源码解析(5)-框架支持作者:大飞 更方便的使用Disruptor: 前面几篇看了Disruptor中的一些重要组件和组件的运行方式,也通过手动组合这些组件的方式给出了一些基本的用例。框架也提供了一个DSL-style API,来帮助我们更容易的使用框架,屏蔽掉一些细节(比如怎么构建RingBuffer、怎么关联追踪序列等)...
2015-11-09 15:04:49 260
原创 disruptor-3.3.2源码解析(4)-处理事件
disruptor-3.3.2源码解析(4)-处理事件作者:大飞 Disruptor中如何处理事件: disruptor中提供了专门的事件处理器接口,先看下接口定义:/** * 事件处理器会等待RingBuffer中的事件变为可用(可处理),然后处理可用的事件。 * 一个事件处理器通常会关联一个线程。 */public inter...
2015-11-09 14:52:22 463
原创 disruptor-3.3.2源码解析(3)-发布事件
disruptor-3.3.2源码解析(3)-发布事件作者:大飞 Disruptor中如何发布事件: 前面两篇看了disruptor中的序列和队列,这篇说一下怎么往RingBuffer中发布事件。这里也需要明确一下,和一般的生产者/消费者模式不同(如果以生产者/消费者的模式来看待disruptor的话),disruptor中队列里面的数据一般称为事件,R...
2015-11-09 14:34:48 261
原创 disruptor-3.3.2源码解析(2)-队列
disruptor-3.3.2源码解析(2)-队列作者:大飞 Disruptor中的队列-RingBuffer: RingBuffer是disruptor最重要的核心组件,如果以生产者/消费者模式来看待disruptor框架的话,那RingBuffer就是生产者和消费者的工作队列了。RingBuffer可以理解为是一个环形队列,那内部是怎么实现的呢?看下...
2015-11-09 14:24:26 290
原创 disruptor-3.3.2源码解析(1)-序列
disruptor-3.3.2源码解析(1)-序列作者:大飞 Disruptor中的序列-Sequence: disruptor中较为重要的一个类是Sequence。我们设想下,在disruptor运行过程中,事件发布者(生产者)和事件处理者(消费者)在ringbuffer上相互追逐,由什么来标记它们的相对位置呢?它们根据什么从ringbuffer上发布...
2015-11-09 14:16:50 335
原创 Jdk1.6 JUC源码解析(27)-Exchanger
Jdk1.6 JUC源码解析(27)-Exchanger作者:大飞 功能简介:Exchanger是一种线程间安全交换数据的机制。可以和之前分析过的SynchronousQueue对比一下:线程A通过SynchronousQueue将数据a交给线程B;线程A通过Exchanger和线程B交换数据,线程A把数据a交给线程B,同时线程B把数据b交给线程A。可见,Synchrono...
2015-11-03 03:18:33 160
原创 Jdk1.6 JUC源码解析(26)-ConcurrentSkipListMap、ConcurrentSkipListSet
Jdk1.6 JUC源码解析(26)-ConcurrentSkipListMap、ConcurrentSkipListSet作者:大飞 功能简介:ConcurrentSkipListMap是一种线程安全的有序的Map。一般我们使用有序Map,不要求线程安全的情况下,可以使用TreeMap,要求线程安全的话,就可以使用ConcurrentSkipListMap。Conc...
2015-11-03 03:08:56 249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人