
Java并发编程
文章平均质量分 79
伟仔NJ
这个作者很懒,什么都没留下…
展开
-
从Java内存模型讲双重检查锁原理
什么是双重检查锁?双重检查锁(Double-Check Locking),顾名思义,通过两次检查,并基于加锁机制,实现某个功能。 要理解什么是双重检查锁,我们从常见的单例模式说起。看第一个例子: 上图中的单例模式一看就知道存在线程问题,如果两个线程:线程A和线程B,同时访问该类,线程A访问到第6行,在还没有实例化完成的时候,线程B访问到第5行,此时也会判断到instance=nul...原创 2018-05-12 13:26:08 · 252 阅读 · 0 评论 -
聊一聊 Spring 中的线程安全性
Spring与线程安全Spring作为一个IOC/DI容器,帮助我们管理了许许多多的“bean”。但其实,Spring并没有保证这些对象的线程安全,需要由开发者自己编写解决线程安全问题的代码。Spring对每个bean提供了一个scope属性来表示该bean的作用域。它是bean的生命周期。例如,一个scope为singleton的bean,在第一次被注入时,会创建为一个单例对象,该对象会...转载 2018-05-12 13:38:54 · 488 阅读 · 0 评论 -
Disruptor系列2:Disruptor原理剖析
都说Disruptor是高性能、低延迟的内存队列,每秒可以处理600W的订单,但是它为什么这么快呢?这就需要我们从他的底层设计原理开始剖析。我觉得,学习了他的实现原理,对自身了解Java并发内存结构是有很大的好处的,因为它把如何基于Java内存结构实现高性能的并发操作,解决锁的性能开销问题发挥到了极致。无锁(Lock-Free)要想提高内存队列的性能,首先需要解决的就是并发环境下锁的开销问...原创 2018-05-21 08:52:33 · 3856 阅读 · 0 评论 -
Disruptor系列1:初识Disruptor
通过这篇文章来记录和分享对Disruptor的初步了解认识Disruptor框架。Disruptor是什么?Disruptor是一个高性能的异步处理框架,或者可以认为是线程间通信的高效低延时的内存消息组件,它最大特点是高性能,其LMAX架构可以获得每秒6百万订单,用1微秒的延迟获得吞吐量为100K+。 它是如何实现高性能的呢?它由于JDK内置的队列有什么区别呢?JDK内置内存...原创 2018-05-10 09:34:45 · 2626 阅读 · 0 评论 -
Disruptor系列3:Disruptor样例实战
章节回顾: - Disruptor系列1:初识Disruptor - Disruptor系列2:Disruptor原理剖析本章节是Disruptor样例实战,依据Disruptor的工作流依次执行的特性,实现各种样例。如果想了解Disruptor是什么,可以查看章节 Disruptor系列1:初识Disruptor ,如果想深层次了解Disruptor,可以查看章节 Disruptor系...原创 2018-05-21 22:10:57 · 11111 阅读 · 6 评论 -
ForkJoin算法实现
要求一个数组内有10万个30左右的数值(非零),要求计算这些值的乘积。 - 时间要求:2s - 堆内存大小:4m实现方案通过ForkJoin实现。代码实现import com.google.common.base.Joiner;import com.google.common.base.Splitter;import org.apache.commons.l...原创 2018-06-15 11:13:52 · 470 阅读 · 0 评论