java  获取多线程执行的结果,可以通过实现Future和Callable接口实现。

1.实现Callable接口

定义一个实现Callable接口的类,用于执行多线程方法和返回结果

public class MyCallableImp implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
        // 实现需要执行的方法
        return 0;
    }
}

2.使用ExecutorService提交执行结果

使用ExecutorService创建一个单线程的线程池,使用submit()方法提交MyCallableImp多线程任务,返回一个Future对象。

注意:无论线程正常执行还是中断或出错,必须使用executor.shutdown()方法关闭线程池

public Integer MyExecutorServiceImp () throws ExecutionException, InterruptedException {
    ExecutorService executor = Executors.newSingleThreadExecutor();
    Future<Integer> future = executor.submit(new MyCallableImp());
    try {
        Integer result = future.get();
        return result;
    } catch (InterruptedException | ExecutionException e){
        e.printStackTrace();
    } finally {
        executor.shutdown();
    }
    return null;
}

3.获取多个线程执行结果

public List<Integer> MyExecutorServiceImp () throws ExecutionException, InterruptedException {
        ExecutorService executor = Executors.newFixedThreadPool(10);
        List<Future<Integer>> futureList = new ArrayList<>();
        List<Integer> resultList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            futureList.add(executor.submit(new MyCallableImp()));
        }
        try {
            for (Future<Integer> future : futureList) {
                Integer result = future.get();
                resultList.add(result);
                System.out.println(result);
            }
            return resultList;
        } catch (InterruptedException | ExecutionException e){
            e.printStackTrace();
        } finally {
            executor.shutdown();
        }
        return new ArrayList<>();
    }

执行结果

JAVA 获取多线程执行的结果_多线程