MST

星途 面试题库

面试题:Java中Future接口的基本使用场景及示例代码

请简要描述Java中Future接口通常在哪些场景下使用,并给出一个简单的使用Future接口获取异步任务执行结果的示例代码。
37.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

场景

  1. 异步计算结果获取:当需要执行一个耗时操作,但不想阻塞主线程,可将该操作放入异步任务,通过Future接口在合适的时机获取计算结果。例如在进行复杂的数据库查询、大规模数据处理等操作时,先发起任务,主线程继续执行其他任务,之后再获取异步任务的结果。
  2. 多任务并行处理:在有多个独立任务需要并行执行的场景下,每个任务可异步执行,使用Future接口来管理这些任务,并获取它们的执行结果。比如一个系统需要同时从多个不同的数据源获取数据,每个数据源的获取操作可以作为一个异步任务,通过Future接口来等待所有任务完成并收集结果。

示例代码

import java.util.concurrent.*;

public class FutureExample {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Future<Integer> future = executorService.submit(() -> {
            // 模拟一个耗时的异步任务
            Thread.sleep(2000);
            return 42;
        });

        try {
            System.out.println("主线程继续执行其他任务...");
            // 获取异步任务的结果,如果任务未完成,get()方法会阻塞直到任务完成
            Integer result = future.get();
            System.out.println("异步任务的结果是: " + result);
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        } finally {
            executorService.shutdown();
        }
    }
}