java异步任务
发布日期:2021-05-07 07:00:01 浏览次数:14 分类:精选文章

本文共 1127 字,大约阅读时间需要 3 分钟。

问题:在我们的生活中通常会遇见在邮件发送的时候,在我们点击发送邮件后,一段时间之后才会得到发送成功的响应。那么怎么才能让用户直接获得响应, 而让后台继续处理呢?

1、解决这类问题通常会考虑到使用多线程来处理。这里利用多线程的延时来模拟响应时间。

public void hello(){           try{               Thread.sleep(3000);        } catch (InterruptedException e) {               e.printStackTrace();        }        System.out.println("数据处理中");    }

2、编写接口调用这个方法

@RestControllerpublic class Test {       @Autowired    MyService myService;    @RequestMapping("/hello")    public String test(){           myService.hello();        return "ok";    }}

运行发现经过3秒时候,页面才响应成功。

3、利用SpringBoot中的@Async和@EnableAsync开启自动使用多线程达到及时响应的目的。
在异步方法上添加注解@Async

@Async    public void hello(){           try{               Thread.sleep(3000);        } catch (InterruptedException e) {               e.printStackTrace();        }        System.out.println("数据处理中");    }

SpringBoot会自动开启线程池进行调借,但是需要在启动方法上添加注解@EnableAsync开启

@SpringBootApplication@EnableAsyncpublic class Springboot07SwaggerApplication {       public static void main(String[] args) {           SpringApplication.run(Springboot07SwaggerApplication.class, args);    }}

运行项目,能及时直接得到响应,后台也依旧能输出延时信息。后台处理,和前端响应是不同的线程在处理。

上一篇:【ybt高效进阶3-3-2】判断负环
下一篇:【ybt高效进阶3-3-1】【luogu P4779】单源最短路径

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月09日 12时33分13秒