版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lv_hang515888/article/details/79005176
背景:接口请求的时候如果是同步,那么有时业务逻辑处理时间很长,请求就会超时!
所以需要在接口请求过来时,就先响应,再去执行业务逻辑。(或者不是一个请求,一个方法里面两个无关的业务逻辑需要异步执行节省效率的也可以用这个方法,代码自己看着改,前提是线程里面执行的方法没有关系不会影响响应的结果)
1.创建一个Controller类用来接收接口请求
@RestController
@RequestMapping("/test")
public class Controller {
//创建线程池,这个线程池类型可以自己定
private static ScheduledExecutorService executor = Executors.newScheduledThreadPool(5)
@RequestMapping(value="init",method = RequestMethod.POST)
public AjaxResult init(@RequestBody String json){
AjaxResult result = new AjaxResult();
//方法加入到线程池中去执行
executor.execute(new ToServer(json)));
//返回响应结果
result.setRetcode(0);
result.setRetmsg("成功");
return result;
}
}
2.再建线程类
public class ToServer extends Thread {
private String json;
//需要什么参数就自己定义
public ToServer(String json) {
this.json = json;
}
/**
* 执行定时请求
*/
@Override
public void run() {
// 把run方法里的内容换成你要执行的内容
service.doService(json);
}
}