线程池初探

简介: 线程池初探

所谓线程池,就是将多个线程放在一个池子里面(所谓池化技术),然后需要线程的时候不是创建一个线程,而是从线程池里面获取一个可用的线程,然后执行我们的任务。线程池的关键在于它为我们管理了多个线程,我们不需要关心如何创建线程,我们只需要关系我们的核心业务,然后需要线程来执行任务的时候从线程池中获取线程。任务执行完之后线程不会被销毁,而是会被重新放到池子里面,等待机会去执行任务。
我们为什么需要线程池呢?首先一点是线程池为我们提高了一种简易的多线程编程方案,我们不需要投入太多的精力去管理多个线程,线程池会自动帮我们管理好,它知道什么时候该做什么事情,我们只要在需要的时候去获取就可以了。其次,我们使用线程池很大程度上归咎于创建和销毁线程的代价是非常昂贵的,甚至我们创建和销毁线程的资源要比我们实际执行的任务所花费的时间还要长,这显然是不科学也是不合理的,而且如果没有一个合理的管理者,可能会出现创建了过多的线程的情况,也就是在JVM中存活的线程过多,而存活着的线程也是需要销毁资源的,另外一点,过多的线程可能会造成线程过度切换的尴尬境地。
对线程池有了一个初步的认识之后,我们来看看如何使用线程池。

  1. 创建一个线程池

ExecutorService executorService = Executors.newFixedThreadPool(1);

  1. 提交任务

executorService.submit(() -> System.out.println("run"));
Future stringFuture = executorService.submit(() -> "run");

  1. 创建一个调度线程池

ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);

  1. 提交一个周期性执行的任务

scheduledExecutorService
.scheduleAtFixedRate(() -> System.out.println("schedule"), 0, 1, TimeUnit.SECONDS);

  1. shutdown

executorService.shutdownNow();
scheduledExecutorService.shutdownNow();

可以发现使用线程池非常简单,只需要极少的代码就可以创建出我们需要的线程池,然后将我们的任务提交到线程池中去。我们只需要在结束之时记得关闭线程池就可以了。本文的重点并非在于如何使用线程池,而是试图剖析线程池的实现,比如一个调度线程池是怎么实现的?是靠什么实现的?为什么能这样实现等等问题。

相关文章
|
9月前
|
达摩院 运维 Linux
RISC-V 基金会 Data Center SIG 第七次会议圆满结束,研讨硬件加速机制
围绕“为何需要 TG、要做哪些规范工作、如何证明可行(PoC)以及如何组织生态协作”等关键点展开讨论。
|
7月前
|
存储 运维 监控
Flink 实时计算 x SLS 存储下推:阿里云 OpenAPI 网关监控平台实践
针对每日百 TB 级的海量网关日志,阿里云开放平台基于 Flink 与 SLS 采用“地域-中心化”分层聚合架构,并结合SLS SPL下推构建高可用实时监控体系的实践,实现了全量 API 的秒级故障告警。
487 62
|
7月前
|
Java API 开发工具
Java获取淘宝商品价格、图片与视频:淘宝开放平台API实战指南
本文详解Java调用淘宝开放平台taobao.item.get接口获取商品详情:涵盖账号注册、权限申请、MD5签名生成、HTTP请求实现及多媒体资源处理,提供完整代码示例与SDK简化方案,助开发者高效集成商品价格、图片、视频等核心数据。(239字)
|
7月前
|
缓存 人工智能 网络协议
2026年域名根服务器技术教程
本文参考:http://dwscf.cn系统介绍域名根服务器的基本概念、全球13台根服务器的当前架构(含ICANN管理及2026年新改进),详解BIND配置部署、性能优化与安全加固(TLS、DNSSEC等),并提供响应慢、配置错误、DDoS攻击等常见问题解决方案,最后展望分布式DNS、AI应用与国际化域名等进阶方向。(239字)
|
安全 网络安全 量子技术
探索未来网络安全的关键:量子加密技术
本文深入探讨了量子加密技术,一项被视为未来网络安全领域的重要突破。通过详细分析量子加密的工作原理、优势以及当前面临的挑战和潜在解决方案,文章为读者提供了对这一前沿技术的全面理解。我们将探讨如何将量子加密技术与现有网络安全架构融合,以及它在未来数字世界中的潜在应用。
1206 2
|
机器学习/深度学习 人工智能
ACL 2024 | CoCA:自注意力的缺陷与改进
CodeFuse团队从一个全新的视角,剖析了传统的 Transformer架构在长文本推理的糟糕表现,并给出了相应的解决方案
797 1
|
存储 分布式计算 搜索推荐
【Spark MLlib】(六)协同过滤 (Collaborative Filtering) 算法分析
【Spark MLlib】(六)协同过滤 (Collaborative Filtering) 算法分析
1128 0
【Spark MLlib】(六)协同过滤 (Collaborative Filtering) 算法分析
|
JavaScript 前端开发 API
如何翻译 Markdown 文件?-2- 几种商业及开源解决方案介绍
如何翻译 Markdown 文件?-2- 几种商业及开源解决方案介绍
|
存储 算法 程序员
408计算机组成原理学习笔记——存储系统(三)
408计算机组成原理学习笔记——存储系统
1347 1
408计算机组成原理学习笔记——存储系统(三)
|
机器学习/深度学习 人工智能 自然语言处理
深入理解TF-IDF、BM25算法与BM25变种:揭秘信息检索的核心原理与应用
深入理解TF-IDF、BM25算法与BM25变种:揭秘信息检索的核心原理与应用

热门文章

最新文章