源码
文章平均质量分 93
源码分析
悟世君子
发上等愿,结中等缘,享下等福 择高处立,寻平处坐,向宽处行
展开
-
DelayQueue 使用和延时功能源码分析
DelayQueue 内部基于优先队列 PriorityQueue(最小堆结构)实现延时时间小的元素总是先出队。延时功能是通过循环加线程等待的方式实现的,先判断 PriorityQueue 中延时时间最小的元素的延时时间是否小于等于0,如果是则直接出队返回;否则让线程等待延时的时长,等待结束后,开始新一轮循环,这时延时时间肯定是小于等于0的,出队返回,达到延时的效果至此完。原创 2023-09-27 16:50:10 · 299 阅读 · 0 评论 -
ScheduledThreadPoolExecutor源码分析-延时线程池是如何实现延时执行的
ScheduledThreadPoolExecutor 线程池是如何实现延时执行的?和线程池的执行流程无关,延时是通过延时队列实现的,当我们提交一个任务到线程池时,它不是先执行任务,而是先把任务添加到延时队列,然后启动 worker 线程执行,worker 线程以阻塞的方法从延时队列中获取任务,如果任务没到执行时间,worker 线程会等待需要延时的时间,等待延时时间结束后,进入新一轮循环,此时延时时间小于等于0,worker 线程可以从延时队列中获取任务,获取到任务后,走正常线程池的流程,执行任务,从而达原创 2023-09-19 14:06:13 · 874 阅读 · 0 评论 -
Callable 和 FutureTask 带返回值线程使用和源码分析
Callable 和 FutureTask 可以创建带返回值的线程,那它是怎么实现的呢?笔者下面分析,先看看它是怎么使用的。原创 2023-09-13 12:00:46 · 553 阅读 · 0 评论 -
SpringMVC源码分析 —— 拦截器是何时调用的
SpringMVC源码分析,拦截器是何时、以什么方式调用的?本文将进行详细说明环境准备笔者创建一个springboot的web项目,使用的springboot的版本是2.3.7.RELEASE对应的spring-web版本是5.2.12.RELEASE下面将对上面版本的springmvc源码进行分析。原创 2023-07-31 18:02:31 · 375 阅读 · 1 评论