Java源码
文章平均质量分 94
Java相关源码
每天都要进步一点点
工作日常技术学习、积累、总结
展开
-
LinkedList类源码阅读
一、简介LinkedList位于java.util包中,也是我们比较常见的集合对象。LinkedList底层是基于双向链表实现的,适合于插入和删除比较多的场景,查询速度相对来说比较慢,由于需要沿着链表挨个查找。防止意外对列表的非同步访问: List list = Collections.synchronizedList(new LinkedList(...));链表是一种物理存储上非连...原创 2020-01-05 19:58:55 · 277 阅读 · 0 评论 -
并发修改异常ConcurrentModificationException详解
目录一、简介二、异常原因分析三、异常原因追踪五、如何避免并发修改异常?六、总结一、简介在多线程编程中,相信很多小伙伴都遇到过并发修改异常ConcurrentModificationException,本篇文章我们就来讲解并发修改异常的现象以及分析一下它是如何产生的。异常产生原因:并发修改异常指的是在并发环境下,当方法检测到对象的并发修改,但不允许这种修改时,抛出该异常。下面看一个示例:public class TestConcurrentModifyException原创 2020-06-14 10:05:51 · 9791 阅读 · 3 评论 -
全面理解ThreadLocal
目录一、ThreadLocal简介二、ThreadLocal的基本使用三、ThreadLocal与Synchronized的区别四、ThreadLocal的内部结构五、ThreadLocal的核心方法源码六、ThreadLocalMap的基本结构七、ThreadLocal的内存泄露问题八、ThreadLocalMap的hash冲突问题一、ThreadLocal简介从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问原创 2021-04-29 15:17:05 · 365 阅读 · 0 评论 -
String类源码阅读
一、简介String类实现了java.io.Serializable序列化接口, Comparable<String>比较接口, CharSequence 三个接口,String类是final的,因此不能被其他类继承。public final class String implements java.io.Serializable, Comparable<Str...原创 2020-01-02 20:49:24 · 241 阅读 · 0 评论 -
HashSet源码阅读
一、简介HashSet是Java中常用的一个集合类,是Set接口的一个实现类,而Set接口继承自Collection接口,所以HashSet是Collection的一个实现类。下面看一下HashSet底层代码的实现:HashSet实现了由一个哈希表(实际上是一个HashMap实例)支持的Set接口。它不保证集合的迭代顺序(无序),并且允许null元素; HashSet的实现不是同步的,如...原创 2020-01-08 20:14:10 · 231 阅读 · 0 评论 -
HashMap源码阅读
一、简介HashMap是开发中用的非常多的一个哈希表数据结构,HashMap类位于java.util包中。下面对HashMap做一个简介:HashMap是一个用于存储Key-Value键值对的集合,底层使用数组 + 链表 + 红黑树实现,每一个键值对也叫做Entry,这些键值对(Entry)分散存储在一个数组中。HashMap数组的每一个元素不止是一个Entry对象,也是一个链表的头节点。...原创 2020-01-07 21:51:00 · 330 阅读 · 0 评论 -
ArrayList类源码阅读
一、简介ArrayList 位于java.util包中,使我们经常使用到的一个集合对象。ArrayList是可调整大小的数组列表接口。实现所有可选的列表操作,并允许所有元素,元素也可以重复,包括null; 除了实现List接口外,这个类还提供了操作数组大小的方法,该数组在内部用于存储列表; ArrayList类似Vector,只是是非同步的; 当元素被添加到ArrayList中时,容...原创 2020-01-04 21:59:53 · 249 阅读 · 0 评论