博客
关于我
java异步任务
阅读量:323 次
发布时间:2019-03-04

本文共 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);    }}

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

转载地址:http://lxvh.baihongyu.com/

你可能感兴趣的文章
Head First设计模式——迭代器模式
查看>>
Head First设计模式——中介者模式和备忘录模式
查看>>
MySQL数据库的两种连接方式:TCP/IP和Socket
查看>>
MongoDB版本及存储引擎区别
查看>>
shell echo单行和多行文字定向写入到文件中
查看>>
解析树状数组
查看>>
AtCoder Beginner Contest 100 题解
查看>>
【数据结构】可持久化线段树初步
查看>>
克拉默法则&矩阵分块:线性代数学习笔记2
查看>>
后缀树
查看>>
Java高性能编程之CAS与ABA及解决方法
查看>>
从BIO到Netty的演变
查看>>
缓存中间件-缓存架构的实现(下)
查看>>
《算法导论》第二章笔记
查看>>
HTML `capture` 属性
查看>>
CSS盒子模型
查看>>
HTML节点操作
查看>>
浏览器页面呈现过程
查看>>
HTML5新特性
查看>>
OAUTH开放授权
查看>>