Bootstrap

java定时任务

定时器概念

是指在 Java 程序中能够按照预定的时间规则自动执行的任务。这些任务可以是简单的打印操作、数据更新、文件备份,也可以是复杂的业务逻辑处理,如定期发送邮件、定时清理缓存等。定时任务的核心在于时间规则的设定,它决定了任务何时执行以及执行的频率。

定时器作用

自动化处理流程:
在企业级应用中,有许多任务是需要定期执行的。例如,银行系统可能需要在每天凌晨进行账务清算,通过 Java 定时任务可以自动触发清算程序,无需人工干预,保证了业务流程的自动化。
电商平台可能需要定期更新商品的库存信息、统计销售数据等。定时任务可以按照设定的时间,如每小时或者每天,自动执行数据更新和统计的代码,确保数据的及时性和准确性。
资源管理和维护:
对于服务器资源,定时任务可以用于定期清理临时文件、日志文件等,以防止磁盘空间被占满。例如,一个 Web 应用服务器可以设置每天定时删除一周前的日志文件,释放磁盘空间。
数据库连接池的管理也可以借助定时任务。定期检查连接池中的连接是否有效,回收无效连接,确保数据库连接的高效利用。
提高系统性能和稳定性:
缓存系统中,定时任务可以用于更新缓存数据。比如,一个新闻网站可以设置定时任务每隔一段时间(如 15 分钟)重新加载热门新闻到缓存中,这样在用户请求热门新闻时可以直接从缓存中获取,减少数据库查询压力,提高系统响应速度。
定时任务还可以用于系统监控。例如,每隔一段时间检查系统的关键指标,如内存使用率、CPU 负载等,当这些指标超出正常范围时,可以及时触发报警机制,保证系统的稳定运行。

以下是java定时任务的示例图

使用方式

使用前想要加上注解

就比如我这个为例

@Scheduled(cron ="* * * * * *"):表示每秒钟执行一次 test 方法。

  @Scheduled(cron ="* * * * * *")
    public void test(){
        System.out.println(new Date() +"李博文吃奥里给,李博文吃奥里给,李博文吃奥里给,
                            李博文吃奥里给,李博文吃奥里给,李博文吃奥里给,李博文吃奥里给,
                            李博文吃奥里给,李博文吃奥里给,李博文吃奥里给");
    }

执行顺序

如图所示我们每隔一秒李博文就要去吃一次奥里给

每一个*号的具体意思

在 cron 表达式中,* 代表“每”或“所有”的意思。@Scheduled(cron ="* * * * * *") 的具体含义如下:
6个字段依次表示:秒、分、小时、日、月、星期
每个 * 表示对应时间单位的每一个值。
具体到这个表达式:
* * * * * * 表示每一秒执行一次任务。
分点解释每个 * 的含义:
秒(0-59):* 表示每一秒。
分(0-59):* 表示每一分钟。
小时(0-23):* 表示每一小时。
日(1-31):* 表示每一天。
月(1-12):* 表示每个月。
星期(0-7):* 表示每一周(其中 0 和 7 都表示星期天)。
因此,@Scheduled(cron ="* * * * * *") 会让 test 方法每秒钟执行一次。

当然如果每一个由自己来定义这个规则是不太方便的

所以我们可以使用生成器Cron - 在线Cron表达式生成器

可以看到我们选中之后会生成对应的规则

我们可以根据自己的需求选出对应规则的

;