jdk
文章平均质量分 94
金色的雨.
一个有着一线大厂梦的小菜几
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ThreadPoolExecutor源码解析
ctl:private static final int COUNT_BITS = Integer.SIZE - 3;//COUNT_BITS = 29//-1 = 11111111111111111111111111111111//RUNNING = 11100000000000000000000000000000,32位private static final int RUNNING = -1 << COUNT_BITS;//ctl = RUNNING privat原创 2021-02-08 14:59:22 · 262 阅读 · 1 评论 -
HashMap源码解析(含红黑树)
简介:前两篇文章,我们分析了数组和链表,我们看到了数组和链表都有相应的缺点。有没有集两家之长的呢?有,那就是HashMap。说到HashMap,不得不说一下hash,也叫散列。就是把任意长度的值,通过散列算法,得到一个固定长度的值。常见的几种Hash函数有直接寻址法、平方取中法、 除留余数法…我们简单看下String的hashCode():比较简单,遍历字符串,取每个字符串的ASCII...原创 2020-04-15 17:56:42 · 857 阅读 · 4 评论 -
ReentrantLock源码解析
简介:本来说好的这篇文章分析Deque的,只是一想Deque需要锁的知识,所以这篇就改一下,先看ReentrantLock,下篇看LinkedBlockingDeque。ReentrantLock:一把可重入的锁,其实就是用Java代码实现的锁,而synchronized是底层实现的,ReentrantLock实现了争取锁失败的线程安全的加入队列,线程释放锁之后会按顺序去唤醒线程争夺锁。UM...原创 2020-04-21 17:08:46 · 428 阅读 · 0 评论 -
LinkedList源码解析
简介:LinkedList的底层是链表结构,并且是双向的。UML图:属性:可以看到的确是一个双向的链表,每个节点自身都包含了前一个节点和后一个节点。链表数据结构:可以看到,首先头节点是没有前驱的,尾节点没有后驱。其次就是每个节点都会保存前一个节点和后一个节点,这个就构成了一个线性表。构造方法:一个空的构造方法啥也没干,下面的需要Collection类型的参数,我们来看下具体实现。...原创 2020-03-27 17:03:43 · 337 阅读 · 0 评论 -
ArrayList源码解析
因为是楼主第一篇博客,楼主又是菜鸡,所以决定挑个软柿子捏一捏,瞅一瞅ArrayList。简介:楼主是jdk1.8,大家看的时候注意下版本。ArrayList的底层是数组,并且可以动态扩容的。继承关系:实现了四个接口,一个抽象类。四个接口没啥好说的,主要是AbstractList这个抽象类。AbstractList 中有两个内部类,默认实现了迭代器接口。属性:东西比较少,并且不复杂。构...原创 2020-03-27 17:01:45 · 211 阅读 · 3 评论 -
ConcurrentHashMap(细节篇)
本篇文章接上篇文章,介绍一些ConcurrentHashMap的细节,虽然不是特别重要,但也是干货满满。addCount的第一部分://counterCells初始为null,CAS+1失败就会把x记录到counterCells中,到时会刷到baseCount的 //先判断counterCells不为null, 不为null说明有线程更新失败了 //此时去CAS很有可能失败,所以就直接不更新了,直接记录了。 if ((as = counterCel原创 2020-12-11 13:40:21 · 2739 阅读 · 11 评论 -
ConcurrentHashMap源码逐行解析
简介:因为博主前面写过HashMap的解析,所以这里只分析和HashMap不同点,类似的地方会滤过,有需要的朋友可以结合HashMap的文章一起看。ConcurrentHashMap是HashMap的升级,是线程安全的。原创 2020-12-11 13:40:09 · 1701 阅读 · 0 评论 -
DelayQueue源码解析
简介:前面分析了常见的LinkedBlockingQueue,这篇看一下DelayQueue,延迟队列。简单来说,就是往队列里面塞对象,塞的时候需要指定到期时间,根据到期时间排序,最前面的是最早到期的。取的时候也是从头开始取,当然要等到过期时间到了才能取出来,提前取就会被阻塞(也可以立即返回一个null)。UML图:属性:DelayQueue的元素必须继承Delayed,具体怎么使用本篇文章就不描述了,直接开始分析常用方法吧。offer(E e):在这里插入代码片...原创 2020-09-07 16:47:45 · 365 阅读 · 0 评论
分享