- 博客(3)
- 收藏
- 关注
原创 HashMap源码笔记
get(key)方法也要用到寻址公式,先把key寻址公式,确定是在哪个位置,然后进那个链表去遍历。//缺省table(数组)大小,为16,1左移4位。//树化阈值(链表长度超过8之后,链表可能变为树)关键方法:putVal()和resize()//table(数组)最大长度(容量)有某一个链表上元素≥8时,才会树化))大于等于64个时,才会允许树化(也就是size大于12时,就扩容。//树降级为链表的阈值。
2025-02-23 15:35:17
458
原创 Timer源码学习
如图所示,多个任务会加入到taskQueue中,会自动排,队首任务一定是最早执行的任务;TimerThread会一直循环执行,从TaskQueue取队首任务,判断当前任务是否已经到了任务执行时间点,如果是,则执行任务。Timer有3个重要的模块,分别是 TimerTask, TaskQueue, TimerThread。,任务队列,TimerTask加入后会按执行时间自动排序。,工作线程,真正循环执行TimerTask的线程。Timer|TimerTask源码学习。
2025-02-23 15:27:08
254
原创 Lambda表达式
在数学中,就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——。我们真的希望创建一个匿名内部类对象吗?不。我们只是为了做这件事情而创建一个对象。我们真正希望做的事情是:将run方法体内的代码传递给Thread类知晓。——这才是我们真正的目的。而创建对象只是受限于面向对象语法而不得不采取的一种手段方式。那,有没有更加简单的办法?
2024-01-24 23:38:26
1458
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人