在Spring Boot中编写CompletableFuture循环,可以通过以下步骤实现:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-async</artifactId>
</dependency>
@Async
注解来标记该方法为异步方法。例如:import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@Service
public class MyService {
@Async
public CompletableFuture<String> doSomethingAsync(int i) {
// 异步操作的逻辑
// 返回一个CompletableFuture对象
}
}
allOf
方法来等待所有异步操作完成。可以使用一个List来保存所有的CompletableFuture对象,并在循环中调用异步方法。例如:import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@RestController
public class MyController {
@Autowired
private MyService myService;
@GetMapping("/async")
public void doAsync() throws ExecutionException, InterruptedException {
List<CompletableFuture<String>> futures = new ArrayList<>();
for (int i = 0; i < 10; i++) {
CompletableFuture<String> future = myService.doSomethingAsync(i);
futures.add(future);
}
CompletableFuture<Void> allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
allFutures.get(); // 等待所有异步操作完成
}
}
在上述代码中,我们创建了一个List来保存所有的CompletableFuture对象,然后在循环中调用异步方法,并将返回的CompletableFuture对象添加到List中。最后,使用CompletableFuture.allOf
方法等待所有异步操作完成。
这样,你就可以在Spring Boot中编写CompletableFuture循环了。请注意,上述代码仅为示例,实际使用时需要根据具体业务逻辑进行调整。
领取专属 10元无门槛券
手把手带您无忧上云