千家信息网

springboot定时任务和异步任务怎么实现

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"springboot定时任务和异步任务怎么实现"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"springboot定时任务和异步任务怎么实现"
千家信息网最后更新 2026年10月31日springboot定时任务和异步任务怎么实现

这篇文章主要介绍"springboot定时任务和异步任务怎么实现"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"springboot定时任务和异步任务怎么实现"文章能帮助大家解决问题。

异步任务简单案例

在我们开发项目时,常常会用到异步处理任务,比如我们在网站上发送邮件,后台会去发送邮件,此时会造成前台响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线程的方式去处理这些任务。

  1. 新建一个service包

  1. 创建AsyncService类

@Service    public class AsyncService {           public void hello(){           try {               Thread.sleep(3000);          } catch (InterruptedException e) {               e.printStackTrace();          }           System.out.println("业务进行中~~");      }    }
  1. 创建controller包

  1. 在controller包下创建一个AsyncController类

@RestController    public class AsyncController {           @Autowired       AsyncService asyncService;           @GetMapping("/hello")       public String hello(){//调用方法后会延迟3秒在页面显示Success           asyncService.hello();           return "success";      }        }

此时访问Localhost:8080/hello的情况是:延迟3秒后,在页面输出Success,在后台会输出业务进行中~~

新问题:如果想页面直接输出信息"Success",而让这个hello方法直接在后台用多线程操作,就需要加上@Async注解,这样spring boot就会自己开一个线程池进行调用

改进:给AsyncService加上注解

@Async//告诉Spring这是一个异步方法    public void hello(){       try {           Thread.sleep(3000);      } catch (InterruptedException e) {           e.printStackTrace();      }       System.out.println("业务进行中~~");    }

但是要让这个注解起作用,还需要在入口文件中开启异步注解功能

@EnableAsync //开启异步注解功能@SpringBootApplication    public class SpringbootTaskApplication {           public static void main(String[] args) {               SpringApplication.run(SpringbootTaskApplication.class, args);          }    }

此时再次测试,发现页面直接输出了Success,但是后台仍然是3秒后输出业务进行中

定时任务简单案例

工作中常常要设置一些定时任务,比如每天在某个时间分析一遍日志

所以Spring提供了异步执行任务调度的方式,提供了两个接口。

TaskExecutor接口

TaskScheduler接口

两个注解:

• @EnableScheduling

• @Scheduled

创建一个ScheduleService,里面编写一个hello方法,让它定时执行

@ServicepublicclassScheduledService{    //秒分时日月周几    @Scheduled(cron="0 * * * * ?")    //这里需要学习一些cron表达式的语法,明白时间如何设置,这里的意思是每当时间到0秒时就执行一次    publicvoidhello(){        System.out.println("hello/////");    }}

要使用定时功能,还需要在入口文件中加上@EnableScheduling,表明开启定时任务功能

@SpringBootApplication    @EnableScheduling//开启定时任务注解功能    @EnableAsync//开启异步注解功能    publicclassSpringbootTaskApplication{        publicstaticvoidmain(String[]args){    SpringApplication.run(SpringbootTaskApplication.class,args);    }        }

此时测试运行,发现每当时间为0秒时就会在后台打印出 hello////

关于"springboot定时任务和异步任务怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

任务 注解 功能 后台 方法 输出 业务 时间 页面 接口 案例 知识 线程 邮件 两个 入口 文件 方式 行业 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州淘业互联网络科技 互联网科技公司起名 科技企业和互联网企业 互联网科技资迅 重庆互联网络科技 南京欣网互联网科技 上海亿帐通互联网科技 人人互联网科技是培训 太原新华互联网科技学校怎么样 山东吉时兔互联网科技有限公司 北京三清互联网科技 互联网科技产品 广西互联网科技孵化中心 中国科技创新与世界互联网大会 保险科技服务互联网营销体系 每天都有哪些好的互联网科技 从那以后互联网科技有限公司 中国科技和美国互联网 杭州融税互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司 喔噻互联网科技有限公司 科技互联网龙头 撒么互联网科技公司 互联网科技公司的市场部门 如何创新互联网科技 互联网金融科技名词解释 山东星卡互联网科技有限公司官网 城市宝互联网科技有限公司 互联网科技收购价值 马化腾互联网科技教学
0