springboot使用多线程案例
时间: 2023-10-14 14:10:08 浏览: 123
下面是一个使用Spring Boot的多线程案例,实现了一个简单的并发计算器:
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.Async;
import java.util.concurrent.CompletableFuture;
@SpringBootApplication
@EnableAsync
public class ConcurrentCalculatorApplication {
public static void main(String[] args) {
SpringApplication.run(ConcurrentCalculatorApplication.class, args);
}
@Async
public CompletableFuture<Integer> square(Integer num) {
return CompletableFuture.completedFuture(num * num);
}
@Async
public CompletableFuture<Integer> cube(Integer num) {
return CompletableFuture.completedFuture(num * num * num);
}
public void calculate() {
try {
CompletableFuture<Integer> squareFuture = square(2);
CompletableFuture<Integer> cubeFuture = cube(3);
Integer squareResult = squareFuture.get();
Integer cubeResult = cubeFuture.get();
System.out.println("Square result: " + squareResult);
System.out.println("Cube result: " + cubeResult);
} catch (Exception ex) {
System.out.println("Error: " + ex.getMessage());
}
}
}
```
在这个例子中,我们使用了`@EnableAsync`注解开启了异步执行功能。然后我们定义了两个异步方法,分别计算一个数的平方和立方,并使用`CompletableFuture`类将计算结果封装成一个异步任务。最后我们定义了一个`calculate()`方法,通过调用`square()`和`cube()`方法并获取它们的异步结果来进行并发计算。
这个例子中的异步方法使用了`@Async`注解,这个注解告诉Spring框架这个方法应该在一个新的线程中异步执行。在实际应用中,我们需要根据具体的业务需求来决定哪些方法需要异步执行,以达到更好的性能和并发度。
阅读全文