JDK
文章平均质量分 95
Always_As
IT小白
展开
-
AbstractQueuedSynchronizer源码解析
从ReentrantLock对AQS源码分析介绍AQS全称:AbstractQueuedSynchronizer,从字面意思翻译为 抽象同步队列 。AQS的是在Java层面提供线程的同步机制。AbstractQueuedSynchronizer是一个抽象类,它里面提供了一些锁的基础实现,并且还定义了一些抽象方法为子类实现提供了模板。线程同步工具CountDownLatch、CyclicBarrier、Semaphore等是基于AQS的实现。基本概念在AQS中维护者一个CLH(Craig, Landi原创 2021-02-05 16:55:40 · 253 阅读 · 0 评论 -
HashMap-JDK1.7&1.8对比
HashMap-JDK1.7&1.8区别在上两篇对HashMap在JDK1.7与1.8原源码进行了分析,了解了HashMap中的实现原理。在阅读源码的时候,看了底层的设计和操作以及思想无不佩服HashMap的作者Doug Lea,JUC也是出自他之手。本片我们来对比HashMap在1.7与1.8的差异性1.JDK1.7 HashMap1.1 数据结构数组+链表,类型都为Entry1.2 扩容1.2.1 扩容条件(size >= threshold) && (nu原创 2021-01-23 19:16:33 · 309 阅读 · 0 评论 -
史上最全HashMap(JDK1.8)详解
HashMap1.8源码解析1.介绍之前写了一篇HashMap 1.7源码解析,本片将对HashMap1.8进行分析。后续再写一篇1.7和1.8中HashMap的区别,之前1.7中出现的一些代码我就不赘述了。HashMap1.8是由:数组(Node)+链表(Node)+红黑树(TreeNode) 组成,而且TreeNode继承与Node ,如下图所示。2.源码解析 一般我们在使用HashMap的时候,最好给一个默认的初始化容量,也就是调的**HashMap(int initialC原创 2021-01-14 17:13:52 · 950 阅读 · 0 评论 -
HashMap 1.7源码解析
HashMap 1.7源码解析1.介绍1.描述 HashMap在我们平常开发中使用非常广泛,本文就从JDK1.7 分析HashMap相关源码(后续再加上1.8). 在JDK1.7中HashMap底层是由数组+链表实现的,每次在插入数据的时候,会根据key来计算对应的Hash.使用各种位操作将Hash值转换成对应的数组下标,根据下标来找到数组(Entry)对应位置.如果当前位置对应的Entry对象不为空,则以头插的方式将数据插入到链表中.如果为空的话,直接将数据插入到Entry数组中.原创 2020-10-23 03:53:27 · 1212 阅读 · 0 评论