前面前已经说明了HashMap以及红黑树的一些基本知识,对JDK8的HashMap也有了一定的了解,本篇就开始看看并发包下的ConcurrentHashMap,说实话,还是比较复杂的,笔者在这里也不会过多深入,源码层次上了解一些主要流程即可,清楚多线程环境下整个Map的运作过程就算是很大进步了,更细... ...
分类:
其他好文 时间:
2019-06-23 17:29:37
阅读次数:
77
“ 今天聊一个非常硬核的技术知识,给大家分析一下CopyOnWrite思想是什么,以及在Java并发包中的具体体现,包括在Kafka内核源码中是如何运用这个思想来优化并发性能的。 这个CopyOnWrite在面试的时候,很可能成为面试官的一个杀手锏把候选人给一击必杀,也很有可能成为候选人拿下Offe ...
分类:
编程语言 时间:
2019-06-05 16:36:12
阅读次数:
110
读多写少的场景下引发的问题? 假设现在我们的内存里有一个 ArrayList,这个 ArrayList 默认情况下肯定是线程不安全的,要是多个线程并发读和写这个 ArrayList 可能会有问题。 那么,问题来了,我们应该怎么让这个 ArrayList 变成线程安全的呢? 有一个非常简单的办法,对这 ...
分类:
编程语言 时间:
2019-06-02 01:36:32
阅读次数:
140
前言 ? 并发编程这个技术领域已经发展了半个世纪了,相关的理论和技术纷繁复杂。那有没有一种核心技术可以很方便地解决我们的并发问题呢?这个问题如果让我选择,我一定会选择 管程 技术。Java 语言在 1.5 之前,提供的唯一的并发原语就是管程,而且 1.5 之后提供的 SDK 并发包,也是以管程技术为 ...
分类:
编程语言 时间:
2019-05-19 23:27:22
阅读次数:
463
概述 CAS(Compare-and-Swap),即 比较 并 替换 ,是一种实现 并发算法 时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。 案例 介绍CAS之前,我们先来看一个例子。 CAS是什么?CAS是英文单词Comp ...
分类:
其他好文 时间:
2019-05-19 18:08:35
阅读次数:
137
并发包【jdk1.7】 同步容器类 Vector与ArrayList区别 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从Arr ...
分类:
编程语言 时间:
2019-05-14 13:31:50
阅读次数:
142
java8中为什么要新增LongAdder?
LongAdder的实现方式?
LongAdder与AtomicLong的对比?
分类:
编程语言 时间:
2019-05-13 10:38:14
阅读次数:
113
java8中为什么要新增LongAdder? LongAdder的实现方式? LongAdder与AtomicLong的对比? ...
分类:
编程语言 时间:
2019-05-13 01:06:10
阅读次数:
139
什么是原子操作? 原子操作和数据库的ACID有啥关系? AtomicInteger是怎么实现原子操作的? AtomicInteger是有什么缺点? ...
分类:
编程语言 时间:
2019-05-07 01:33:37
阅读次数:
171
前言:线程池技术是通过对线程资源的统一管理来达到对线程资源的重复利用,降低线程频繁创建和销毁的开销。java jdk在java.util.concurrent并发包中有一套现成的对线程池的实现方案,我们可以直接拿来使用,快速实现多线程并发编程场景。这里对concurrent包中的线程池框架的实现进行 ...
分类:
编程语言 时间:
2019-05-03 22:43:02
阅读次数:
156