Java并发编程:定时任务

本文探讨了Java从JDK 1.5开始引入的ScheduledThreadPoolExecutor,作为替代Timer进行定时任务和周期性任务执行的工具。ScheduledThreadPoolExecutor克服了Timer的单线程模式、任务调度受影响及异常处理等问题,它使用DelayedWorkQueue实现任务调度,确保多任务的高效并行执行。

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

  • 自 JDK 1.5 开始,JDK 提供了 ScheduledThreadPoolExecutor 类用于计划任务 / 定时任务,这个类有两个用途:
    • 在给定的延迟之后运行任务
    • 周期性重复执行任务
  • 在此之前是使用 Timer 类来完成定时任务的,但是 Timer 有缺陷:
    • Timer 是单线程模式;
    • 如果在执行任务期间某个 TimerTask 耗时较久,那么就会影响其它任务的调度;
    • Timer 的任务调度是基于绝对时间的,对系统时间敏感;
    • Timer 不会捕获执行 TimerTask 时所抛出的异常,由于 Timer 是单线程,所以一旦出现异常,则线程就会终止,其他任务也得不到执行。
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService {
   
    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值