异步调用
同步:程序按照定义的顺序执行,每一行都必须等待上一行完成后才能执行
异步:程序执行时,无需等待异步调用的语句返回,即可执行后面的操作
适用场景
- 耗时操作,不影响主流程操作异步执行,降低响应时间
实现异步方式
- 创建线程
- 线程池
- @Async
- 标注的方法必须返回void或者Future
- 建议将标注的方法放到独立的类中
- 建议自定义BlockingQueue的大小(spring.task.execution.pool.queue-capacity)
- 生产者消费者模式
远程调用异步化
- AsyncRestTemplate
- WebClient:spring5.0提供,基于Reactor,WebFlux
- 生产者消费者模式