吃透Java并发十七:线程池之ScheduledThreadPoolExecutor

本文详细解析ScheduledThreadPoolExecutor,它是线程池的一种扩展,具备延时和周期任务调度功能。通过ScheduledFutureTask包装Runnable任务,利用DelayedWorkQueue实现任务按到期时间排序。构造线程池时,ScheduledThreadPoolExecutor会选择DelayedWorkQueue作为任务队列,其调度流程包括任务提交、任务添加到无界队列、创建工作线程以及任务执行。ScheduledThreadPoolExecutor在核心线程池满时不再创建工作线程,除非将核心线程池大小设为0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ScheduledThreadPoolExecutor简介

我们曾经提到过一种可对任务进行延迟/周期性调度的执行器(Executor),这类Executor一般实现了ScheduledExecutorService这个接口。ScheduledExecutorService在普通执行器接口(ExecutorService)的基础上引入了Future模式,使得可以限时或周期性地调度任务。

ScheduledThreadPoolExecutor的类继承关系如下图:
在这里插入图片描述
从上图中可以看到,ScheduledThreadPoolExecutor其实是继承了ThreadPoolExecutor这个普通线程池,我们知道ThreadPoolExecutor中提交的任务都是实现了Runnable接口,但是ScheduledThreadPoolExecutor比较特殊,由于要满足任务的延迟/周期调度功能,它会对所有的Runnable任务都进行包装,包装成一个RunnableScheduledFuture任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃透Java

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值