Java 定时任务-最简单的3种实现方法

本文介绍了Java定时任务的三种实现方法:Timer、ScheduledExecutorService和Spring Task。Timer简单但易受任务执行影响;ScheduledExecutorService功能强大,适合单机环境;Spring Task支持更复杂的需求,如cron表达式,并可在分布式环境中扩展。文章还讨论了cron表达式和分布式定时任务的Redis实现,包括ZSet和键空间通知两种策略。
摘要由CSDN通过智能技术生成

一、Timer

Timer是JAVA自带的定时任务类,实现如下:

public?class?MyTimerTask?{????
    public?static?void?main(String[]?args)?{????????
        //?定义一个任务???????
    ?   TimerTask?timerTask?=?new?TimerTask()?{????????????
        @Override????????????
            public?void?run()?{????????????????
            System.out.println("打印当前时间:"?+?new?Date());????
????????    }???????
?        };????????
        //?计时器???????
?       Timer?timer?=?new?Timer();???????
?       //?开始执行任务 (延迟1000毫秒执行,每3000毫秒执行一次)????????
        timer.schedule(timerTask,?1000,?3000);????
    }
}

Timer 优缺点分析

优点是使用简单,缺点是当添加并执行多个任务时,前面任务的执行用时和异常将影响到后面任务,这边深海建议谨慎使用。

二、ScheduledExecutorService

ScheduledExecutorService也是Java自带的类,

它可以实现Timer具备的所有功能,并解决了 Timer类存在的问题

实现如下:

public?class?MyScheduledExecutorService?{????
    public?static?void?main(String[]?args)?{????????
        //?创建任务队列???10?为线程数量??????
        ScheduledExecutorService?scheduledExecutorService?=?
                Executors.newScheduledThreadPool(10);?
        //?执行任务??????
??      scheduledExecutorService.scheduleAtFixedRate(()?->?{??????????
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值