springboot 异步执行方法,有返回值
时间: 2023-12-27 16:53:10 浏览: 117
Spring Boot中异步执行方法并且有返回值的方式可以通过使用@Async和CompletableFuture实现。首先,在Spring Boot应用程序中使用@Async注解标注一个异步方法,然后在调用该方法时,使用CompletableFuture对象获取异步执行的结果。下面是一个示例代码:
```
@Service
public class MyService {
@Async
public CompletableFuture<String> asyncMethod() throws InterruptedException {
Thread.sleep(5000);
String result = "异步方法执行结果";
return CompletableFuture.completedFuture(result);
}
}
```
在上述代码中,我们使用@Async注解标注了一个异步方法asyncMethod(),该方法调用后会在新的线程中异步执行。同时,我们使用CompletableFuture返回异步方法的执行结果。您可以将该方法注入到需要调用它的代码中,然后使用CompletableFuture对象获取返回结果。
```
@RestController
public class MyController {
@Autowired
private MyService myService;
@GetMapping("/async")
public CompletableFuture<String> async() throws InterruptedException {
return myService.asyncMethod();
}
}
```
在上述代码中,我们注入了MyService服务,并将它的异步方法asyncMethod()在MyController中暴露成RESTful API。在async()函数中,我们仅仅返回MyService的异步方法引用,并没有实际等待异步方法的执行结果。可以理解为async()方法需要返回一个Promise对象,该对象代表异步执行的结果。需要注意的是,我们在MyService的异步方法中使用CompletableFuture.completedFuture方法,将异步方法的执行结果result进行封装,这样我们就可以在async()方法中通过CompletableFuture对象获取异步方法的执行结果了。
综上所述,以上是Spring Boot中异步执行方法并且有返回值的方式,希望能对您有所帮助。
阅读全文