当前位置: 首页 > article >正文

线程池里面的execute 和 submit 方法有什么区别?

目录

1. 返回值

2. 异常处理

3. 任务类型支持

4. 使用场景

示例代码

使用 execute

使用 submit

使用 submit 提交 Callable 任务

总结对比

选择建议


execute 和 submit 是 Java 线程池中用于提交任务的两种方法,它们的主要区别在于返回值、异常处理和任务类型支持。以下是它们的详细对比:


1. 返回值

  • execute

    • 无返回值(void)。

    • 适用于不需要获取任务执行结果的场景。

  • submit

    • 返回一个 Future 对象,可以通过 Future.get() 获取任务的执行结果。

    • 适用于需要获取任务执行结果的场景。


2. 异常处理

  • execute

    • 如果任务执行过程中抛出未捕获的异常,线程会终止,异常会被传递给线程池的 UncaughtExceptionHandler

    • 需要手动在任务内部捕获异常,否则异常会丢失。

  • submit

    • 如果任务执行过程中抛出异常,异常会被封装在 Future 对象中,调用 Future.get() 时会抛出 ExecutionException

    • 可以通过 Future.get() 捕获并处理异常。


3. 任务类型支持

  • execute

    • 只接受 Runnable 类型的任务。

    • Runnable 任务没有返回值。

  • submit


http://www.kler.cn/a/541162.html

相关文章:

  • 网络安全溯源 思路 网络安全原理
  • DeepSeek训练成本与技术揭秘
  • 【C++】命名空间
  • Qt:常用控件
  • 离散型变量的 PSI-群体稳定性指标计算
  • 51单片机俄罗斯方块计分函数
  • Docker 部署 MongoDB | 国内阿里镜像
  • 汽车与AI深度融合:CES Asia 2025前瞻
  • 问卷数据分析|SPSS实操之信度效度检验
  • 老游戏回顾:TR9
  • Spring Boot 项目中使用腾讯云对象存储(COS)
  • 20爬虫:使用playwright与图鉴破解豆瓣滑动验证码
  • 软考高级《系统架构设计师》知识点(一)
  • Vue 响应式渲染 - Vue3 Class和style
  • Flink 内存模型各部分大小计算公式
  • 金砖国家技能大赛云计算赛项(容器云部分题解)
  • uniapp使用路由名称跳转
  • 分享升级spotbugs-maven-plugin 4.8.6.0遇到的坑(内附稳定运行的jdk和maven版本)
  • excel高级求和SUMIFS函数,类似数据库group by操作
  • Arcgis/GeoScene API for JavaScript 三维场景底图网格设为透明
  • 【Linux开发工具】包管理器yum和文本编辑器vim
  • NO.11十六届蓝桥杯备战|if-else语句|嵌套if|悬空else|练习4道(C++)
  • AWS在游戏开发与全球发行中的技术实践与架构解析
  • lxml 教程:Python 中高效处理 XML 和 HTML 的利器
  • 牛客周赛Round 80——举手赢棋 python 补题 + 题解
  • Django视图与URLs路由详解