
源码分析
ChampionCcCcCcC
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
集合中的containsKey,containsValue,contains,containsAll方法使用注意
常用的 HashMap 的containsKey,containsValue 方法: 常用的 ArrayList 的 contains,containsAll 方法: 注意的是,containsAll 方法是在 AbstractCollection 抽象类中。 通过查看源码,可以看到在这些方法中,均是通过调用了 object 的 equals 方法进行比较,但是如果传入的 object 未重写 equals 和 hashcode 方法,将比较对象的地址,最终会导致结果为 false,需要注意如果只原创 2020-06-01 10:51:24 · 1028 阅读 · 0 评论 -
HashMap 和 ConcurrentHashMap 源码解析(JDK1.8)(红黑树部分没有解析)
以前也有看过 HashMap 的源码,但看的比较浅,这次对比 ConcurrentHashMap 一起再学习一遍。 HashMap 部分: 看了许多博客对比分析觉得这一篇还不错,参考了其中的解析思维 https://blog.youkuaiyun.com/m0_37914588/article/details/82287191 HashMap的结构图: 数据结构图 首先我们先把 HashMap 中的成员变...原创 2019-03-16 12:11:35 · 390 阅读 · 0 评论 -
ArrayList中remove(int index)方法中为什么不使用fastRemove方法?
今天在看 ArrayList 源码时,我发现了一个疑问。 ArrayList 有两个删除的方法分别是 remove(int index) 和 remove(Object o) 方法。 public E remove(int index) { rangeCheck(index); // 检查下标是否合法 modCount++; // 修改次数加一 ...原创 2019-03-18 15:58:41 · 1014 阅读 · 1 评论 -
StringBuffer源码解析
String 是我们用到非常多的一个类,对于 String 做大量的操作,如果只使用 String 的话,效率没有那么高。一般会推荐使用 StringBuffer 和 Stringbuilder 来做字符串的操作。 那么 StringBuffer 和 StringBuilder 的区别是什么呢? StringBuffer 是线程安全的,因为它里面的方法都被 synchronized 关键字修饰,例...原创 2019-03-22 17:05:34 · 544 阅读 · 2 评论 -
浅谈线程池 ThreadPoolExecutor 以及工具类 Executors
Executors 工具类提供了四种不同的线程池来帮助我们创建不同需求的线程池: 1.newCachedThreadPool(): 这是一个可以缓存的线程池,当有新任务时,如果线程池内有空闲线程,则使用空闲线程,如果线程池内没有空闲线程,则新建一个线程执行任务。空闲线程超过60秒会被回收掉。 2.newFixedThreadPool(int nThreads): 这是一个定长的线程池,线程池内的线...原创 2019-04-04 16:00:03 · 1138 阅读 · 0 评论