最新文章
-
21 2018年05月
synchronized原理
在遇到多线程情况下使用最多的synchronized,但它是一个重量级的锁,相对于Lock,它会显得有点笨重,但是自从JDK1.6开始已经对synchronized进行了各种优化,并没有之前版本那么重,下面来看看synchronized的实现机制以及锁优化。基本使用synchronized可以保证方
-
17 2018年05月
fast-fail机制
fast-fail机制,就是快速失败机制,它是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变操作时,就有可能产生fast-fail机制(是有可能,而不是一定)fast-fail示例public class FailFastTest { private static List&
-
15 2018年05月
happens-before原则
随着对java并发的越来越深入,到后面总会接触到happens-before规则。由于存在线程本地内存和主内存的原因,加上重排序,会导致多线程环境下的存在可见性的问题,我们无法保证所有的场景某个线程改的变量对其他线程可见,但是我们可以指定某些规则,这些规则就是happens-before。概述在JM
-
14 2018年05月
java并发之ConcurrentHashMap
ConcurrentHashMap介绍因为ConcurrentHashMap支持并发操作,所以源码理解起来并不是很容易,尤其是JDK1.8的源码加入红黑树,本文分别分析JDK1.8和JDK1.7源码JDK1.8 中 ConcurrentHashMap 类取消了 Segment 分段锁,采用 CAS
-
09 2018年05月
java集合框架之TreeSet
TreeSet介绍与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的,我们知道TreeMap是一个有序的二叉树,那么TreeSet肯定也是一个有序的,它的作用是提供Set集合。本文源码均为JDK1.8TreeSet源码分析定义TreeSet继承了Abstrac
-
09 2018年05月
java集合框架之HashSet
HashSet介绍对于HashSet而言,它是基于HashMap来实现的,底层采用HashMap来保存元素,若对Hashmap很熟悉,那么HashSet就很容易了本文源码均为JDK1.8HashSet源码解析定义HashSet继承至AbstractSet,实现Set、Cloneable、Clonea
-
07 2018年05月
java集合框架之HashTable
HashTable介绍先来看看HashMap和HashTable有哪些区别关于null,HashMap运行key和value都可以为null,而HashTable不允许key或者value为null的键值对当HashMap遇到null为key时,回调用putForNullKey方法来进行处理,当Ha
-
05 2018年05月
java集合框架之TreeMap
TreeMap概述TreeMap集合是基于红黑树(Red-Black tree,本片暂不介绍红黑树,后面单独写一篇 )的 NavigableMap实现。该集合最重要的特点就是可排序,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
-
03 2018年05月
java集合框架之HashMap
HashMap概述HashMap是我们使用最多的的Collection,它是基于哈希表的Map接口的实现,以key-value的形式存储,系统会根据hash算法来计算key-value的存储位置。HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap并不是一个线程
-
02 2018年05月
List集合之LinkedList
LinkedList概述LinkedList和ArrayList一样都是实现了List接口,只是ArrayList是可变数组的实现,LinkedList是链表实现。基于链表实现方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问ArrayList更有优势。LinkedLis