线程池的两种提交方式

线程池是一种并发编程的机制,用于管理和重用线程,以提高应用程序的性能和效率。Java中的ExecutorService是线程池的一个接口,它提供了两种主要的方法来提交任务:execute()submit()

1. execute() 方法:

void execute(Runnable command);

  • 参数: 接受一个Runnable接口的实例,表示要执行的任务。

  • 返回值: 该方法返回void,即不返回执行结果。

  • 使用场景: 适用于那些不需要返回结果的任务,通常是一些简单的异步操作。

  • 示例

ExecutorService executor = Executors.newFixedThreadPool(5); 
executor.execute(() -> { 
// 执行任务的代码 
}); 
executor.shutdown();

 爆红了,确实不能返回

2. submit() 方法:

Future<T> submit(Callable<T> task);

Future<T> submit(Runnable task, T result);

Future<?> submit(Runnable task);

  • 参数:

    • Callable<T>:接受一个Callable接口的实例,表示要执行的任务,并返回一个Future对象,可以通过该对象获取任务的执行结果。
    • Runnable:接受一个Runnable接口的实例,表示要执行的任务,可以返回一个Future对象,但该对象的get()方法总是返回null
    • Runnable + T:与上一种类似,但可以提供一个结果作为参数,表示任务成功完成时的结果。
  • 返回值:

    • Future<T>:表示异步计算的结果,可以通过调用get()方法获取任务执行的结果。
  • 使用场景: 适用于需要获取任务执行结果的场景,可以方便地使用Future来获取异步任务的结果。

  • 示例

ExecutorService executor = Executors.newFixedThreadPool(5);Future<String> futureResult = executor.submit(() -> {// 执行任务的代码return "Task completed";
});try {String result = futureResult.get();System.out.println(result);
} catch (InterruptedException | ExecutionException e) {e.printStackTrace();
}executor.shutdown();

 

总的来说,execute()适用于不需要返回结果的简单任务,而submit()适用于需要获取任务执行结果的情况。选择使用哪种方法取决于你的具体需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/315539.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP tables防火墙(一)

本章主要介绍&#xff1a; 熟悉Linux防火墙的表&#xff0c;链的结构理解数据包匹配的基本流程学会编写IP tables规则 1.0防火墙基础 在 Internet 中&#xff0c;企业通过架设各种应用系统来为用户提供各种网络服务&#xff0c;如 Web 网站、电子邮件系统、FTP 服务器、数…

教你用策略枚举消除if-else判断(以支付场景为例子)带给你新的认知,记得收藏哦~

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

TDD-LTE 附着流程和去附着流程

目录 1. 附着流程 1.1. 正常附着流程 2. 异常附着流程 2.1 RRC建立失败 2.2 核心网拒绝 2.3 eNodeB未收到初始化上下文建立请求 2.4 RRC重配置请求丢失 2. 去附着流程 2.1 非关机去附着流程 2.1.1 连接态非关机去附着 2.1.2 空闲态非关机去附着 2.2 关机去附着流程 …

【algorithm】自动驾驶常见常考的几个模型和推导,顺便总结自己遇到的考题经验不断更新之———控制版

写在前面 本来快达成目标了&#xff0c;没想到公司遭受了问题&#xff0c;公司和同事我感觉还是挺好的&#xff0c;有国企的正规也有小企业的灵活&#xff0c;大家都很有学习欲望。 作为本次再次复习回忆如下&#xff1a; 把之前面试准备的 机器学习&#xff08;基本搬运到CSD…

车载 Android之 核心服务 - CarPropertyService 的VehicleHAL

前言: 本文是车载Android之核心服务-CarPropertyService的第二篇&#xff0c;了解一下CarPropertyService的VehicleHAL, 第一篇在车载 Android之 核心服务 - CarPropertyService 解析-CSDN博客&#xff0c;有兴趣的 朋友可以去看下。 本节介绍 AndroidAutomotiveOS中对于 Veh…

什么是软件测试?这是我听过最通俗易懂的解释

很多人总是说我要学习软件测试&#xff0c;因为他可以拿到一个不错的薪资。 但是当我问他你知道什么是软件测试吗&#xff1f;这个时候&#xff0c;他总会愣住了&#xff0c;一脸不屑的表情说着&#xff0c;不就是找bug&#xff0c;给软件找问题&#xff0c;找茬吗&#xff1f…

混合编程—C++程序中python脚本的嵌入方法(理论部分)

一、C与Python高级编程语言简概 &#xff08;一&#xff09;C C是一种被广泛使用的计算机程序设计语言。它是一种通用程序设计语言&#xff0c;支持多重编程范式&#xff0c;例如过程化程序设计&#xff08;Procedural programming&#xff09;、面向对象程序设计&#xff08;…

CISSP 第1章:实现安全治理的原则和策略

作者&#xff1a;nothinghappend 链接&#xff1a;https://zhuanlan.zhihu.com/p/669881930 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 CIA CIA 三性&#xff1a; 机密性&#xff1a;和数据泄露有关。完整性…

odoo17 | 模型和基本字段

前言 在上一章的最后&#xff0c;我们能够创建一个Odoo模块。然而&#xff0c;在这一点上&#xff0c;它仍然是一个空壳&#xff0c;不允许我们这样做 存储任何数据。在我们的房地产模块中&#xff0c;我们希望存储与 数据库中的属性&#xff08;名称、描述、价格、居住面积等…

【BIG_FG_CSDN】C++ 数组与指针 (个人向——学习笔记)

一维数组 在内存占用连续存储单元的相同类型数据序列的存储。 数组是静态存储器的块&#xff1b;在编译时确定大小后才能使用&#xff1b; 其声明格式如下&#xff1a; 元素类型 数组名[常量]&#xff1b;元素类型&#xff1a;数组中元素的数据类型&#xff1b; 常量&#…

Python 自学(二) 之流程控制语句

目录 1. if ... elif ... else 语句 P62 1. if ... elif ... else 语句 P62 每个判断语句后面要加 :elif 的写法比较特别

【搜索引擎】elastic search核心概念

前言 本文不涉及ES的具体安装下载、操作、集群的内容&#xff0c;这部分内容会放在后面一篇文章中。本文只包含ES的核心理论&#xff0c;看完本文再去学ES的细节会事半功倍。 目录 1.由日志存储引出的问题 2.什么是ES&#xff1f; 3.ES的数据结构 4.ES的核心原理 5.联系作…