
源码
文章平均质量分 66
shinerio
shine生活是一种态度
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ArrayList源码阅读
ArrayList 可变长动态数组继承自AbstractList,实现了List<E>, RandomAccess, Cloneable, java.io.Serializable接口ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。 ArrayList 实现了RandmoAccess接口,即提供了...原创 2018-03-23 23:07:31 · 207 阅读 · 0 评论 -
LinkedList源码分析
LinkedList源码阅读简介LinkedList继承自AbstractSequentialList实现了List,Deque,Cloneable,Serializable接口LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器(List),又可以看作一个双端队列(Queue),同时又可以看作一个栈(Stack)。LinkedList...原创 2018-03-30 17:18:37 · 235 阅读 · 0 评论 -
HashMap源码阅读——红黑树
HashMap源码阅读——红黑树上节我们提到了jdk1.8中引入了红黑树来解决一个桶下链表过长的问题。关键参数HashMap中有三个关于红黑树的关键参数//一个桶的树化阈值//当桶中元素个数超过这个值时,需要使用红黑树节点替换链表节点//这个值必须为 8,要不然频繁转换效率也不高static final int TREEIFY_THRESHOLD = 8;//一个树的链表还原阈值//当扩容原创 2018-04-15 15:17:39 · 659 阅读 · 1 评论 -
Vector、Stack源码分析
Vector、Stack源码分析VectorVector继承自AbstractList,实现了List,RandowAccess,Cloneable,Serializable接口,是ArrayList在多线程下的替代选择。Vector大部分方法都与ArrayList实现相同,不同的是需要同步的方法都使用了synchronized 关键词进行修饰,所有是同步的。 /** 按索引顺...原创 2018-04-03 22:16:05 · 174 阅读 · 0 评论 -
volatile与ReentrantLock详解
volatile与ReentrantLock详解volatile上节我们讲了通过Synchronized可以到方法和代码块进行同步。而用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最新的值。volatile很容易被误用,使用它并不能保证操作的原子性。volatile还会禁止指令排序。我们先进行一个简单的高并发测试public class Counter { pu转载 2018-04-04 21:41:25 · 1056 阅读 · 1 评论 -
CopyOnWriteArrayList源码阅读
CopyOnWriteArrayList源码阅读CopyOnWriteArrayList实现了List,RandomAccess,Cloneable,Serializable接口CopyOnWrite容器即写时复制容器。通俗地讲,当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器复制出一个新的容器,然后在新的容器里添加元素,添加玩元素之后再讲原来容器的引用指向新的容器。这样可以做原创 2018-04-05 13:40:05 · 200 阅读 · 0 评论 -
HashMap源码阅读
HashMap源码阅读(超详细)本文基于Jdk1.8HashMap继承自AbstractMap,实现了Map,Cloneable,Serializable接口,是一个关联数组、哈希表,允许null键/值、非同步、不保证有序(比如插入的顺序)、也不保证序不随时间变化。其底层数据结构是数组称之为哈希桶,每个桶里面放的是链表,链表中的每个节点,就是哈希表中的每个元素。在JDK8中,当链表长度达到8,会转化原创 2018-04-13 20:06:05 · 1271 阅读 · 0 评论