当前位置: 首页> 游戏> 网游 > Java并发编程中的FutureTask详解

Java并发编程中的FutureTask详解

时间:2025/7/9 15:27:30来源:https://blog.csdn.net/qq_41840843/article/details/140365053 浏览次数:1次

Java并发编程中的FutureTask详解

    • 1、核心特点
    • 2、基本用法
      • 2.1 包装 Callable 任务
      • 2.2 包装 Runnable 任务
    • 3、注意事项


💖The Begin💖点点关注,收藏不迷路💖

FutureTask 是 Java 并发包 java.util.concurrent 中的一个类,它实现了 Future 接口,并提供了异步执行计算任务的能力。

1、核心特点

  • 异步执行:允许你提交任务进行异步执行,主线程可以继续执行其他任务。
  • 结果获取:通过 get() 方法获取任务执行的结果,如果任务未完成,则当前线程会阻塞。
  • 可取消:可以尝试取消任务的执行,如果任务已启动且允许中断,则任务执行线程会被中断。
  • 任务检查:通过 isDone() 方法检查任务是否已完成。

2、基本用法

2.1 包装 Callable 任务

当你有一个返回结果的计算任务时,可以使用 Callable 接口。FutureTask 可以包装 Callable 任务,并提供异步执行的能力。

Callable<Integer> task = () -> {  // 模拟耗时计算  return 123;  
};  FutureTask<Integer> futureTask = new FutureTask<>(task);  
ExecutorService executor = Executors.newSingleThreadExecutor();  
executor.submit(futureTask);  // 等待任务完成并获取结果  
try {  Integer result = futureTask.get();  System.out.println("结果: " + result);  
} catch (Exception e) {  e.printStackTrace();  
}  executor.shutdown();

2.2 包装 Runnable 任务

对于不返回结果的 Runnable 任务,FutureTask 的 get() 方法将返回 null。

Runnable task = () -> {  // 模拟耗时操作  
};  FutureTask<?> futureTask = new FutureTask<>(task, null);  
ExecutorService executor = Executors.newSingleThreadExecutor();  
executor.submit(futureTask);  try {  // 等待任务完成,但不获取结果  futureTask.get();  
} catch (Exception e) {  e.printStackTrace();  
}  executor.shutdown();

3、注意事项

1、使用 get() 方法时,注意处理 ExecutionException。

2、调用 cancel(true) 时,任务可能因不响应中断而无法被取消。

3、使用完 ExecutorService 后,记得关闭它以释放资源。
在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖
关键字:Java并发编程中的FutureTask详解

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: