总共分3步
第一步
创建线程类一定要继承Callable接口实现call()这个方法中写业务代码样例如下:
public class ServerTask implements Callable<ResponseEntity<String>> { private final String param; private final String indexName; public ServerTask(String param, String indexName) { this.param = param; this.indexName = indexName; } @Override public ResponseEntity<String> call() throws Exception { // 发送get同步请求 ResponseEntity<String> entity = SendUtils.sendApi(param,indexName); System.out.println("执行 --- index : " +indexName); return entity; } }
ResponseEntity<String> :这块是设置返回的可以写你需要的类型
ServerTask(String param, String indexName):这个是构造方法可以用来传参数
第二步 创建线程池 --注入线程集合--执行代码如下
ExecutorService executor = Executors.newFixedThreadPool(5); List<ServerTask> serverTasks = new ArrayList<>(); for (int i = 0; i < indexList.size(); i++) { serverTasks.add(new ServerTask(param, indexList.get(i))); } List<Future<ResponseEntity<String>>> taskResList = null; try { taskResList = executor.invokeAll(serverTasks); } catch (InterruptedException e) { e.printStackTrace(); }
indexList :是我的业务需要注入的线程集合,你的根据你的业务改成你的
第三步 监听执行结果
// 结果输出
for (Future<ResponseEntity<String>> intFuture:taskResList){
System.out.println(intFuture.get());
}
利用get监听到每个线程执行结果
结束