Spring Boot中如何详细解析Async异步任务执行流程?

2026-05-21 07:482阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1229个文字,预计阅读时间需要5分钟。

Spring Boot中如何详细解析Async异步任务执行流程?

异步调用是指执行结果不立即返回,而是等待结果后继续执行后续逻辑的调用方式。同步调用则需等待结果返回后再继续执行。通常,我们使用异步操作时,会创建一个线程来执行一段逻辑,执行完毕后线程被丢弃。

异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑。

通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下:

ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(() -> { try { // 业务逻辑 } catch (Exception e) { e.printStackTrace(); } finally { } });

这样的方式看起来没那么优雅,尽管用了java的lambda。在Spring Boot中有一种更简单的方式来执行异步操作,只需要一个@Async注解即可。

@Async public void saveLog() { System.err.println(Thread.currentThread().getName()); }

我们可以直接在Controller中调用这个业务方法,它就是异步执行的,会在默认的线程池中去执行。需要注意的是一定要在外部的类中去调用这个方法,如果在本类调用是不起作用的,比如this.saveLog()。 最后在启动类上开启异步任务的执行,添加@EnableAsync即可。

阅读全文

本文共计1229个文字,预计阅读时间需要5分钟。

Spring Boot中如何详细解析Async异步任务执行流程?

异步调用是指执行结果不立即返回,而是等待结果后继续执行后续逻辑的调用方式。同步调用则需等待结果返回后再继续执行。通常,我们使用异步操作时,会创建一个线程来执行一段逻辑,执行完毕后线程被丢弃。

异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑。

通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下:

ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(() -> { try { // 业务逻辑 } catch (Exception e) { e.printStackTrace(); } finally { } });

这样的方式看起来没那么优雅,尽管用了java的lambda。在Spring Boot中有一种更简单的方式来执行异步操作,只需要一个@Async注解即可。

@Async public void saveLog() { System.err.println(Thread.currentThread().getName()); }

我们可以直接在Controller中调用这个业务方法,它就是异步执行的,会在默认的线程池中去执行。需要注意的是一定要在外部的类中去调用这个方法,如果在本类调用是不起作用的,比如this.saveLog()。 最后在启动类上开启异步任务的执行,添加@EnableAsync即可。

阅读全文