1 异步实体类
@Data
@Builder
public class AsyncEntity {
//整型数集合
private List<Integer> integerList;
//学生集合
private List<Student> studentList;
}
2 异步获取的代码
@Service
public class TestService {
private static ExecutorService executorService = new ThreadPoolExecutor(10,20,1000, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
public AsyncEntity getAsyncEntity() {
//1、异步获取整型List
CompletableFuture<List<Integer>> integerListFuture =
CompletableFuture.supplyAsync(() -> getInegerList(), executorService);
//2、异步获取Student的List
CompletableFuture<List<Student>> studentListFuture =
CompletableFuture.supplyAsync(() -> getStudentList(), executorService);
try {
CompletableFuture.allOf(integerListFuture, studentListFuture).get(1000, TimeUnit.MILLISECONDS);
} catch (Exception e) {
log.error("future get failed,error={}", e);
}
return AsyncEntity.builder()
.integerList(integerListFuture.getNow(Lists.newArrayList()))
.studentList(studentListFuture.getNow(Lists.newArrayList()))
.build();
}
}
3 使用
@Controller
public class TestController {
@Autowire
private TestService testService;
@RequestMapping("/test")
public String test() {
AsyncEntity asyncEntity = testService.getAsyncEntity();
List<Integer> integerList = asyncEntity.getIntegerList();
List<Student> studentList = asyncEntity.getStudentList();
return "ok";
}
}