2024年3月6日
类图结构 J.U.C 的锁组件中 类相对较少,从 JDK 相应的包中也能看出来,下图标记了其中最主要的几个接口和类,也是本文要分析的重点。 下图 将这几个接口和类 以类图的方式展现出来,其中包含了它们所声明的主要方法。 Lock 组件 Lock 组件的结构很简单,只有一个接口和一个实现类,源码如下。 1 2 3 4 5 6 7 8 9 10 11 12 13 14……
阅读全文
2024年3月6日
利用 IDEA 整理类图还是蛮不错的,虽然这个功能 BUG 很多。下图是 J.U.C 并发包中所有类组成的类图,源码看多了 再去整理这个图,感觉还是很爽的。 根据功能,主要划分了六个部分,其中比较重要的是:线程池及其相关类、并发容器、AQS 与锁与同步工具类、原子类。图可能整理的不够细致,但看着这些类,回想一下其中……
阅读全文
2024年3月6日
线程池核心组件图解 看源码之前,先了解一下该组件 最主要的几个 接口、抽象类和实现类的结构关系。 该组件中,Executor 和 ExecutorService 接口 定义了线程池最核心的几个方法,提交任务 submit ()、关闭线程池 shutdown()。抽象类 AbstractExecutorService 主要对公共行为 submit()系列方法进行了实现,这些 submit()……
阅读全文
2024年3月6日
TreeSet 是 Java 中实现有序集合的一个类,它基于红黑树实现,可以保证集合中的元素按照自然顺序或自定义顺序排序。在本文中,我们将详细介绍 TreeSet 的实现原理,并结合源码和示例代码进行解释。 TreeSet 的底层数据结构 TreeSet 的底层数据结构是红黑树,红黑树是一种自平衡二叉搜索树,它可以保证在插入、删除和查找元素时,时间复……
阅读全文
2024年3月6日
LinkedList LinkedList 是 Java 中实现双向链表的一个类,它实现了 List 接口和 Deque 接口。LinkedList 可以用作栈、队列和双端队列。在本文中,我们将详细介绍 LinkedList 的实现原理,并结合源码和示例代码进行解释。 LinkedList 的结点 LinkedList 的结点是一个静态内部类 Node,它包含三个属性:item 表示结点存储的元素,next 表示下一个结点……
阅读全文
2024年3月6日
HashMap 大家都清楚,底层是 数组 + (链表 / 红黑树),元素是无序的,而 LinkedHashMap 则比 HashMap 多了这一个功能,并且,LinkedHashMap 的有序可以按两种顺序排列,一种是按照插入的顺序,一种是按照访问的顺序(初始化 LinkedHashMap 对象时设置 accessOrder 参数为 true),而其内部是靠 建立一个双向链表 来维护这个顺序的,在每次插入……
阅读全文
2024年3月6日
HashSet 本身并没有什么特别的东西,它提供的所有集合核心功能,都是基于 HashMap 来实现的。如果了解 HashMap 源码的实现,HashSet 源码看起来跟玩一样。我的博客中有专门分析 HashMap 源码的文章,不熟悉的请自行翻阅。 HashSet 的特点如下: 内部使用 HashMap 的 key 存储元素,以此来保证元素不重复; HashSet 是无序的,因为 HashMap 的 key 是无序的; HashSet 中……
阅读全文
2024年3月6日
作为工作中最重要、最常用的容器之一,当然还是要自己动手写一篇 HashMap 的源码解析来加深对其的印象咯,而且它的设计与实现 也有很多值得学习的地方。 源码赏析 JDK1.8 的 HashMap 底层使用的是 动态数组,数组中元素存放的是 链表或红黑树。核心源码如下。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32……
阅读全文
2024年3月6日
HashMap 源码中主要了解其核心源码及实现逻辑。ConcurrentHashMap 就不再重复那些数据结构相关的内容咯,这里重点看一下它的并发安全实现。源码如下。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65……
阅读全文
2024年3月6日
一文直接带你吃透 ArrayList ArrayList 是日常开发中相当常见、面试也相当常考的一种 JDK 集合类,了解并熟悉、甚至能实现一个 ArrayList 对面试、提升自己编码功底大有益处。 一、写给小白 ArrayList 简单使用技巧 这部分是 ArrayList 的简单使用技巧,主要是介绍 ArrayList 的几个常见方法。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 /**……
阅读全文