java 异步执行并监听多线程操作(线程中可以传参数可以返回)实例

本文介绍了如何在Java中使用Callable接口创建线程任务,通过ExecutorService线程池并发执行,并捕获并处理每个任务的执行结果。步骤包括创建继承Callable的ServerTask类,创建固定大小的线程池,以及监听线程执行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总共分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监听到每个线程执行结果

结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值