ThreadLocal 是线程的本地变量,也就是不同线程的同一个 ThreadLocal 的 get/set 是独立的。每个线程 Thread 内部有 ThreadLocalMap,Map 的键是 ThreadLocal那么,根据线程 Thread 和 ThreadLocal1 ThreadLocalMapThreadLocalMap 是 ThreadLocal 的静态内部类,是 ThreadLo
转载 2021-05-18 21:20:34
245阅读
2评论
在Java集合类中最常用的除了ArrayList外,就是HashMap了。本文尽自己所能,尽量详细的解释HashMap的源码。一山还有一山高,有不足之处请之处,定感谢指定并及时修正。    在看HashMap源码之前先复习一下数据结构。    Java最基本的数据结构有数组和链表。数组的特点是空间连续(大小固定)、寻址迅速,但是插入和删除时需要移动元素,所以查询快,增加删除慢。链表
转载 2021-07-08 16:40:33
184阅读
在Java集合类中最常用的除了ArrayList外,就是HashMap了。本文尽自己所能,尽量详细的解释HashMap的源码。一山还有一山高,有不足之处请之处,定感谢指定并及时修正。 在看HashMap源...
转载 2013-08-19 18:52:00
40阅读
2评论
不积跬步,无以至千里;不积小流,无以成江海。从基础做起,一点点积累,加油! 《Java集合类》中讲述了ArrayList的基础使用,本文将深入剖析ArrayList的内部结构及实现原理,以便更好的、更高效的...
转载 2013-08-19 22:49:00
97阅读
2评论
LinkedHashMap类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;而在迭代访问时反而更快,因为它使用链表维护内部次序...
转载 2013-08-19 19:35:00
67阅读
2评论
1. HashMap继承体系 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {} 结合下面的类继承关系图,可以看出HashMap的主要作用: HashMa
转载 2020-11-02 03:52:00
433阅读
2评论
ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了 ...
转载 2021-09-10 17:23:00
84阅读
2评论
就这么简单【源码剖析】本篇主要讲解ConCurrentHashMap~看这篇文章之前最好是有点数据结构的基础:Java...
原创 2021-07-22 15:55:37
512阅读
在我们的面试中HashMap基本上是一个逃不开的知识点,本文就带你一起学习HashMap的部分源码。如果有不正确的地方,欢迎指正。祝你学习愉快。由于网上大部分的解析都是基于JDK1.8的,然而我的JDK是11。所以我就来写一篇HashMap在JDK11中的源码剖析。如果后面有机会,我会再写关于1.8的(不过貌似源码差不多)。文章目录1、类的基本关系2、成员变量3、构造方法4、成员方法...
原创 2023-01-17 13:29:51
106阅读
下载jdk1.8.0,安装http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html使用eclipse查看源码。点 “window”-> "Preferences" -> "Java" -> "Installed JRES";在右边框里会列出现在的jre环境,如果没有想要看
原创 2016-03-15 13:48:29
1270阅读
1点赞
原创 2021-12-09 14:08:00
306阅读
HashMap底层是由 数组+(链表)=(红黑树) 组成,每个存储在HashMap中的键值对都存放在一个Node节点之中,其中包含了Key-Value之外,还包括hash值(key.hashCode()) ^ (h >>> 16)) 。
转载 2022-05-07 19:56:57
116阅读
概述 在 JDK 1.5 以前,锁的实现只能用 synchronized 关键字;1.5 开始提供了 ReentrantLock,它是 API 层面的锁。先看下 ReentrantLock 的类签名以及如何使用: 典型用法: 该用法和使用 synchronized 关键字效果是一样的。既然有了 sy
原创 2021-08-05 15:22:03
237阅读
概述 Semaphore 是并发包中的一个工具类,可理解为信号量。通常可以作为限流器使用,即限制访问某个资源的线程个数,比如用于限制连接池的连接数。 打个通俗的比方,可以把 Semaphore 理解为一辆公交车:车上的座位数(初始的“许可” permits 数量)是固定的,行驶期间如果有人上车(获取
原创 2021-08-05 15:23:16
216阅读
概述 前文「JDK源码分析-HashMap(1)」分析了 HashMap 主要方法的实现原理(其他问题以后分析),本文分析下 LinkedHashMap。 先看一下 LinkedHashMap 的类继承结构图: 可以看到 LinkedHashMap 继承了 HashMap。 我们知道 HashMap
原创 2021-08-05 15:23:34
328阅读
概述 上文「JDK源码分析-ArrayList」主要分析了 ArrayList 的实现原理。本文分析 List 接口的另一个实现类:Vector。 Vector 的内部实现与 ArrayList 类似,也可以理解为一个「可变数组」。其继承结构如下(省略部分接口): PS: 由于 Vector 目前使
原创 2021-08-05 15:23:42
162阅读
概述 CyclicBarrier 是并发包中的一个工具类,它的典型应用场景为 “屏障
原创 2021-08-05 15:20:09
196阅读
概述 相较于 ArrayList,LinkedList 在平时使用少一些。 LinkedList 内部是一个双向链表,并且实现了 List 接口和 Deque 接口,因此它也具有 List 的操作以及双端队列和栈的性质。双向链表的结构如下: 前文分析了 Queue 和 Deque 接口,正是因为 L
原创 2021-08-05 15:23:38
244阅读
概述 ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」。 我们知道,Java 中的数组初始化时需要指定长度,而且指定后不能改变。ArrayList 内部也是一个数组,它对数组的功能做了增强:主要是在容器内元素增加时可以动态扩容,
原创 2021-08-05 15:23:45
307阅读
概述 CountDownLatch 是并发包中的一个工具类,它的典型应用场景为:一个线程等待几个线程执行,待这几个线程结束后,该线程再继续执行。 简单起见,可以把它理解为一个倒数的计数器:初始值为线程数,每个线程结束时执行减 1 操作,当计数器减到 0 时等待的线程再继续执行。 代码分析 Count
原创 2021-08-05 15:23:22
226阅读
  • 1
  • 2
  • 3
  • 4
  • 5