线程池初探

简介: 线程池初探

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

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

相关文章
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
527 0
|
人工智能 网络性能优化 异构计算
阿里云基础网络技术5篇论文入选全球网络顶会NSDI
阿里云在NSDI 2025会议上发表5篇主会论文,涵盖大模型训练网络故障诊断、仿真、性能优化及CDN流控算法等领域。其中,《Evolution of Aegis》提出两阶段演进路线,显著降低故障诊断时间;《SimAI》实现高精度大模型训练模拟;其他论文分别在CDN拥塞控制、GPU解耦推理和容器网络性能优化上取得突破。这些成果为AI大模型时代的云计算基础设施发展提供了重要支持。NSDI是计算机网络与系统研究领域的顶级会议,本次录取率仅12.5%。
|
安全 自动驾驶 物联网
新四化驱动,如何构建智能汽车的“全场景”可进化互联网络?
在智能化、电动化、网联化、共享化的时代浪潮中,汽车正从单纯的 “机械产品” 进化为先进的 “移动智能终端”。在软件定义汽车(SDV)的崭新时代,每一次 OTA 升级的顺利完成、每一秒自动驾驶的精准决策、每一帧车载娱乐交互的流畅呈现,都离不开一张实时响应、全域覆盖、安全可靠的广域网络。
|
机器学习/深度学习 自然语言处理 安全
ACL 2025 | GALLa:用图结构增强代码大模型,让代码理解更精准!
通过级联多模态架构将代码结构图对齐到大模型表征中
907 69
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
运维 监控 数据可视化
故障定位48小时→5分钟:靠的不是玄学,是“全网透视眼”
在多云部署的网络架构下,企业需要全方位监控全链路网络,解决故障定位难题。 Fusion WAN可视化平台提供实时监控和故障定位能力,帮助企业实现业务畅通。
故障定位48小时→5分钟:靠的不是玄学,是“全网透视眼”
|
11月前
|
人工智能
AI界的篮球赛AI-BA来了,NBA中国赛2025比赛门票等你来拿
AI界的篮球赛AI-BA来了,NBA中国赛2025比赛门票等你来拿
281 9
|
人工智能 运维 监控
领先AI企业经验谈:探究AI分布式推理网络架构实践
当前,AI行业正处于快速发展的关键时期。继DeepSeek大放异彩之后,又一款备受瞩目的AI智能体产品Manus横空出世。Manus具备独立思考、规划和执行复杂任务的能力,其多智能体架构能够自主调用工具。在GAIA基准测试中,Manus的性能超越了OpenAI同层次的大模型,展现出卓越的技术实力。
|
机器学习/深度学习 人工智能 缓存
BlockDance:扩散模型加速革命!复旦字节联手实现50%无损提速
BlockDance 是复旦大学与字节跳动联合推出的扩散模型加速方法,通过识别重用相邻时间步中的结构相似特征,减少冗余计算,最高可加速50%,同时保持生成质量。
554 27
BlockDance:扩散模型加速革命!复旦字节联手实现50%无损提速
|
人工智能 运维 网络安全
重构门店网络:从“打补丁“到“造地基“的跨越
传统网络架构正在威胁门店数字化转型,其“三大致命矛盾”架构老化、业务爆发、新兴技术卡壳等问题日益严重。传统网络的“人肉运维”模式效率低下,人肉容灾能力不足。随着云化需求的增加,传统网络架构无法适配云计算、AI应用等新兴技术,云化受阻。

热门文章

最新文章