spirng boot 使用异步线程
时间: 2023-08-02 19:12:11 浏览: 99
Spring Boot 可以通过 `@Async` 注解来支持异步线程,具体步骤如下:
1. 在 Spring Boot 启动类上添加 `@EnableAsync` 注解开启异步线程支持。
2. 在需要异步执行的方法上添加 `@Async` 注解。
3. 在方法的返回值类型上使用 `CompletableFuture` 类型,可以方便地处理异步执行结果。
示例代码如下:
```java
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.concurrent.CompletableFuture;
@Service
public class AsyncService {
@Async
public CompletableFuture<String> asyncMethod() {
// 异步执行的方法
return CompletableFuture.completedFuture("异步执行结果");
}
}
```
在另一个类中调用异步方法并处理结果:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@RestController
public class AsyncController {
@Autowired
private AsyncService asyncService;
@GetMapping("/async")
public String async() throws ExecutionException, InterruptedException {
Future<String> future = asyncService.asyncMethod();
String result = future.get(); // 阻塞等待异步执行结果
return result;
}
}
```
需要注意的是,异步线程需要使用线程池来管理,可以在配置文件中设置线程池的相关参数。例如:
```properties
spring.task.execution.pool.core-size=10
spring.task.execution.pool.max-size=20
spring.task.execution.pool.queue-capacity=200
```
阅读全文