源码部分
文章平均质量分 80
MZR--JAVA
这个作者很懒,什么都没留下…
展开
-
java集合--- 老韩
java集合—尚硅谷Collection 接口 遍历原始 使用 的 是 迭代器 Iterator(迭代器)1.Iterator 对象 称为 迭代器, 主要 用于 Collection 集合中的 元素2. 实现了 Collection 接口 的 集合类 都有 一个 iterator(),用于 返回 实现了 Iterator 接口的对象即可以返回 一个 迭代器3. Iterator 仅用于 遍历集合 ,本身 不存放对象迭代器的 原理 :Iterator iterator(原创 2021-11-04 22:54:28 · 739 阅读 · 1 评论 -
ConcurrentHashMap 补充
HashTable性能差主要是由于所有操作需要竞争同一把锁,而如果容器中有多把锁,每一把锁锁一段数据,这样在多线程访问时不同段的数据时,就不会存在锁竞争了,这样便可以有效地提高并发效率。这就是ConcurrentHashMap所采用的"分段锁"思想。put的主要逻辑也就两步:1.定位segment并确保定位的Segment已初始化 2.调用Segment的put方法。get方法无需加锁,由于其中涉及到的共享变量都使用volatile修饰,volatile可以保证内存可见性,所以不会读取到过期数据。Co原创 2021-09-18 10:18:43 · 55 阅读 · 0 评论 -
hashmap线程不安全的原因 hashmap补充
不安全原因:(1)在put的时候,因为该方法不是同步的,假如有两个线程A,B它们的put的key的hash值相同,不论是从头插入还是从尾插入,都会有一个丢失。假如A获取了插入位置为x,但是还未插入,此时B也计算出待插入位置为x,则不论AB插入的先后顺序肯定有一个会丢失;(2)在扩容的时候,jdk1.8之前是采用头插法,当两个线程同时检测到hashmap需要扩容,在进行同时扩容的时候有可能会造成链表的循环, 主要原因就是,采用头插法,新链表与旧链表的顺序是反的,在1.8后采用尾插法就不会出现原创 2021-09-18 10:15:31 · 288 阅读 · 0 评论 -
LinkedList 源码 透析
LinkedList 源码 透析LinkedList 是 一个 实现了 List 接口 和 Deque 接口 的 双端链表。LinkedList 继承了 AbstractSequentialList实现了 Cloneable Serializable 接口LinkedList 是 线程不安全的 。LinkedList 底层 的 链表结构 使得 能够 高效的 插入 和 删除 操作。另外 实现了 Deque 接口 , 使得 LinkedList 具有 队列 的 特性。如果想使Linked原创 2021-09-29 22:35:36 · 52 阅读 · 0 评论 -
ArrayList 源码透析
ArrayList 源码透析ArrayList 的 底层 是 数组队列 ,相当于 动态数组。与 java 数组 相比 , 容量 能 动态 增长。在 添加 大量元素 前 ,可以 通过 ensureCapacity(int minCapacity) 操作 增加ArrayList 实例 的 容量 , 这可以 减少 递增式 在 分配 的 数量。ArrayList 继承于 AbstaractList ,实现了 List RandomAccess Cloneable Serializable原创 2021-09-29 21:15:45 · 54 阅读 · 0 评论 -
HashSet源码解析
**HashSet源码解析 **蓝色线条:继承 绿色线条:接口实现public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{HaspSet 继承 HashSet 实现 Cloneable Set Serializable(Cloneable 表明它支持克隆,可以调用超类的clone()方法进行浅拷贝原创 2021-09-29 17:15:18 · 112 阅读 · 0 评论 -
ConcurrentHashMap 源码解析
ConcurrentHashMap 源码解析线程安全的。ConcurrentHashMap 1.7数据结构: Segment 数组 + HashEntry 数组 + 链表···ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 HashMap 的内部可以进行扩容。但是 Segment 的个数一旦初始化就不能改变,默认 Segment 的个数是 16 个,(你也可以认为 ConcurrentHash原创 2021-09-29 16:35:37 · 117 阅读 · 0 评论 -
HashMap 源码 透析
HashMap原创 2021-09-28 20:10:42 · 69 阅读 · 0 评论