![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记整理
文章平均质量分 59
qq_45483846
这个作者很懒,什么都没留下…
展开
-
线程池源码(二)
代码】线程池源码(二)原创 2022-08-05 20:32:56 · 162 阅读 · 0 评论 -
线程池源码(一)
/ 线程池是running或者移除任务失败,判断工作线程是否为0, else if (workerCountOf(recheck) == 0) // 工作线程数为0,但是工作队列中有任务在排队,则任务无人处理 // 添加一个空任务,非核心线程,为了处理在工作队列中排队的任务 addWorker(null, false);} // 添加到任务队列失败,则创建非核心线程执行任务 // 如果这时创建非核心线程失败(当前线程不小于maximumPoolSize时),就会执行拒绝策略 else if (!...原创 2022-08-04 23:23:26 · 350 阅读 · 0 评论 -
算法之并查集整理
路径压缩是指在查询的过程中,更改节点的指向,使得树的高度更低,一般而言,有“隔代压缩”和“完全压缩”两种策略。按秩合并是指在合并的过程中,使得“高度”更低的树的根结点指向高度更高的根结点,以避免合并以后的树高度增加。并查集同时使用“路径压缩”和“按秩合并”,“合并”与“查询”的时间复杂度接近O(1);并查集的优化路径压缩(PathCompression)与按“秩(rank)”合并。路径压缩和按秩合并一起使用的时候,难以维护“秩”准确的定义,但依然具有参考价值。每个节点都保存了到节点的引用。.........原创 2022-07-17 22:16:57 · 63 阅读 · 0 评论 -
线程池原理
getTask方法中,核心线程会一直卡在workQueue.take方法,被阻塞并挂起,不会占用CPU资源,直到拿到Runnable然后返回(当然如果allowCoreThreadTimeOut设置为true,那么核心线程就会去调用poll方法,因为poll可能会返回null,所以这时候核心线程满足超时条件也会被销毁)。在构造方法中,创建了一个线程,线程的任务就是自己。线程池本身有一个调度线程,这个线程就是用于管理布控整个线程池里的各种任务和事务,例如创建线程、销毁线程、任务队列管理、线程队列管理等等。..原创 2022-07-17 22:03:13 · 150 阅读 · 0 评论