作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬
学习必须往深处挖,挖的越深,基础越扎实!
异步处理rest服务
- 使用Callable异步处理rest服务
- 使用DeferredResult异步处理rest服务
- 异步处理配置
异步处理就是主线程使用委托副线程去处理业务,然后主线程去接纳其他的请求。提高性能
Callable
@RestController
public class AsyncController {
private Logger logger = LoggerFactory.getLogger(getClass());
@RequestMapping("/order")
public Callable<String> order() {
logger.info("主线程开始");
Callable<String> result = () -> {
logger.info("副线程开始");
TimeUnit.SECONDS.sleep(1);
logger.info("副线程返回");
return "success";
};
logger.info("主线程返回");
return result;
}
}
输出
2023-08-02 17:43:24.406 INFO 15644 --- [nio-8080-exec-2] c.e.demo.web.async.AsyncController : 主线程开始
2023-08-02 17:43:24.407 INFO 15644 --- [nio-8080-exec-2] c.e.demo.web.async.AsyncController : 主线程返回
2023-08-02 17:43: