温馨提示×

怎样获取JavaFutureTask执行结果

小樊
81
2024-11-19 13:34:42
栏目: 编程语言

要获取JavaFutureTask的执行结果,您需要使用Future.get()方法。这个方法会阻塞当前线程,直到任务完成并返回结果。以下是一个简单的示例:

import java.util.concurrent.*;

public class Main {
    public static void main(String[] args) {
        // 创建一个线程池
        ExecutorService executor = Executors.newSingleThreadExecutor();

        // 创建一个JavaFutureTask实例
        Callable<String> task = () -> {
            // 模拟一个耗时任务
            Thread.sleep(3000);
            return "任务执行结果";
        };

        // 将Callable任务提交给线程池并获取JavaFutureTask实例
        Future<String> future = executor.submit(task);

        try {
            // 获取任务执行结果,这将阻塞当前线程,直到任务完成
            String result = future.get();
            System.out.println("任务执行结果: " + result);
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        } finally {
            // 关闭线程池
            executor.shutdown();
        }
    }
}

在这个示例中,我们创建了一个线程池,然后提交了一个Callable任务给线程池。Callable任务返回一个字符串作为结果。我们使用Future.get()方法获取任务执行结果,并在控制台输出结果。注意,future.get()方法可能会抛出InterruptedExceptionExecutionException异常,因此我们需要使用try-catch语句处理这些异常。最后,不要忘记关闭线程池。

0