JDK源码分析
文章平均质量分 88
王世晖
呵呵哒
展开
-
jdk源码分析之LinkedList
LinkedList关键属性size表示当前链表保存了多少数据,first指针指向链表第一个数据,last指针指向链表最后一个数据 transient int size = 0; /** * Pointer to first node. * Invariant: (first == null && last == null) || *原创 2016-05-23 15:06:34 · 866 阅读 · 0 评论 -
jdk源码分析之ArrayList
ArrayList关键属性分析ArrayList采用Object数组来存储数据 /** * The array buffer into which the elements of the ArrayList are stored. * The capacity of the ArrayList is the length of this array buffe原创 2016-05-24 13:52:55 · 911 阅读 · 0 评论 -
jdk源码分析之HashMap
HashMap的底层数据结构HashMap底层采用数组加链表的数据结构存储键值对 Hash根据key的哈希值转化为数组的下标将键值对存入数组中,数组的元素是一个链表,冲突的key放置在数组的同一个位置,使用链表将冲突的数据链接起来 数组的底层结构如下: /** * An empty table instance to share when the table is not in原创 2016-05-25 14:02:25 · 608 阅读 · 0 评论 -
jdk源码分析之CopyOnWriteArrayList
CopyOnWriteArrayList的原理CopyOnWriteArrayList的核心思想是利用高并发往往是读多写少的特性,对读操作不加锁,对写操作,先复制一份新的数组,在新的数组上面修改,然后将新数组赋值给旧数组的引用,并通过volatile 保证其可见性,通过Lock保证并发写。底层数据结构private volatile transient Object[] array;final O原创 2016-05-25 14:53:09 · 706 阅读 · 0 评论 -
jdk源码分析之ConcurrentHashMap
基本原理Hashtable使用synchronized锁住整张Hash表,锁的粒度太大导致Hashtable性能低下。ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁原创 2016-06-01 22:30:22 · 3317 阅读 · 0 评论 -
jdk源码分析之LinkedHashMap
基本原理LinkedHashMap继承自HashMap,因此具有HashMap的所有特性。在HashMap的基础上,保持了key的插入顺序或者访问顺序。实现方法就是用双向循环链表将所有的entry链接起来,读取数据的时候直接读取此双向循环链表的数据即可。public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>原创 2016-06-02 11:11:06 · 855 阅读 · 1 评论 -
jdk源码分析之PriorityQueue
基本原理PriorityQueue(优先级队列)的数据结构是最小堆,采用数组作为底层数据结构。 不同于普通的遵循FIFO规则的队列,PriorityQueue每次都选出优先级最高的元素出队,优先队列里实际是维护最小堆,通过最小堆使得每次取出的元素总是优先级最高的。 /** * Priority queue represented as a balanced binary heap:原创 2016-06-07 16:36:44 · 798 阅读 · 0 评论 -
jdk源码分析之WeakHashMap
基本原理WeakHashMap特点是,当除了自身有对key的引用外,此key没有其他引用,那么WeakHashMap会在下次对WeakHashMap进行增删改查操作时及时丢弃该键值对,节约内存使用,此特性使得WeakHashMap非常适合构建缓存系统。 WeakHashMap是主要通过expungeStaleEntries函数的来实现移除其内部不用的entry从而达到的自动释放内存的目的。基本上只原创 2016-06-08 10:39:33 · 1576 阅读 · 0 评论