
JDK
JDK相关
南国勇者102324
愿我生而无畏,正大光明。
展开
-
PriorityQueue分析
PriorityQueue和JDK自带的任务调度器Timer的实现都是使用了二叉堆,二叉堆是什么?(分最大树和最小树)其实我也不太能描述它?但表现在程序里是个什么状态呢?以最小树例:首先使用数组作为存储结构,每个添加都把元素放在数组末尾,然后进行上浮操作。然后每次获取时就能获取到值最小的元素。上浮就是新元素不断与排在前面的元素进行比较,新元素值较小,则靠前排。需要说明的是上浮的比较并不是逐个元素的向前比较,而是跳跃般的,新元素索引[index >> 1],类似二分法般的。与Ti原创 2022-01-24 17:08:28 · 175 阅读 · 0 评论 -
jkd-timer任务调度类小结
原理:任务TimerTask使用如scheduleAtFixedRate添加在Timer实例的后,会被添加Timer实例里一个叫TaskQueue,TaskQueue这东西是优先队列,根据任务TimeTask的执行时间进行从小到大的排序,一个使用jdk数组为底层实现的二叉堆,二叉堆结构实现了这么个结果,TimerTask加进入来插入到数组的最后面,然后进行上浮操作fixUp()尽量把TimerTask往前排,如果TimerTask的执行时间是队列里最小的则会排到数组的第一位,如果是第二小则不一定会排到数据原创 2022-01-24 16:11:25 · 523 阅读 · 0 评论