springboot提供的异步调用

Spring Boot提供了许多异步调用的选项,其中最常用的是使用@Async注释和CompletableFuture类。

@Async注释可用于将任何方法标记为异步方法。使用该注释时,Spring Boot将在后台创建一个新线程池,并将方法调用委派给该线程池。异步方法的返回值必须是voidFuture类型。

下面是一个使用@Async注释的示例:

@Service
public class MyService {
    
    @Async
    public CompletableFuture<String> doSomethingAsync() {
        // Do some long-running task asynchronously
        return CompletableFuture.completedFuture("Done");
    }
}

在这个例子中,doSomethingAsync方法被标记为异步方法,并返回一个CompletableFuture对象,以便调用者可以在任务完成时获取结果。

另一种异步调用的方法是使用CompletableFuture类。这个类提供了一种简单的方式来异步执行任务,并在任务完成时获取结果。

下面是一个使用CompletableFuture的示例:

@Service
public class MyService {
    
    public CompletableFuture<String> doSomethingAsync() {
        return CompletableFuture.supplyAsync(() -> {
            // Do some long-running task asynchronously
            return "Done";
        });
    }
}

在这个例子中,doSomethingAsync方法创建了一个CompletableFuture对象,并使用supplyAsync方法将一个Lambda表达式传递给它。Lambda表达式将在后台线程中执行,并返回"Done"字符串作为任务的结果。

无论你使用哪种方法,异步调用都可以帮助你在Spring Boot应用程序中处理长时间运行的任务,而不会阻塞主线程。

posted @ 2023-04-02 11:43  海边蓝贝壳  阅读(79)  评论(0编辑  收藏  举报