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

1-5 线程池:Thread+阻塞队列+循环

今天我们要带大家探究Java线程池的运行机制,但在这之前,需要先复习一下线程。

Thread的设计理念

假设现在是1990年代,而你是Sun公司的核心开发,是Java这门语言的设计者之一。在这次发版时,你们希望Java能够支持多线程,比如同时执行A、B两个任务。

作为抽象大师,你很自然地想到要设计一个Thread类。

new Thread().start(),启动一个子线程执行任务B

任务A和任务B同时执行

但这样一来,Thread中的任务就硬编码了,new Thread().start()执行的永远是任务B。好在Java支持继承,子类继承Thread后可以重写run方法。

这样一来,new Thread2().start()执行的就是任务C

但还是不够灵活。假设我希望任务C在被Thread2执行的同时,还能提交给一个线程池执行,目前这种基于继承的设计就有点无能为力:任务C和Thread是一个整体,要想提交任务C,只能提交整个Thread对象,但线程池不支持提交Thread对象!

更好的做法是,把任务和线程拆分开,让任务和线程彼此都更纯粹。

由于Java并不像JavaScript那样直接支持Function类型,所以要想把任务从Thread拆出来,只能设计一个interface或者class承接。经过权衡,我们最终选择interface,设计了Runnable接口。

run方法:负责承接任务

以任务C为例,如果要把任务C从Thread2中拆出来,可以这么做:

任务C被拆出来以后,Thread的职责变得单一了,回归到最初的设计。

好,现在我们有了1个Thread(线程)和1个Runnable(任务),目前它俩毫无关系。如何让Thread执行Runnable呢?换句话说,如何Thread和Runnable产生关联呢?

组合!

Thread内部维护一个Runnable:需要被执行的任务

Thread和Runnable是一种松耦合关系,非常灵活!

http://www.jsqmd.com/news/760924/

相关文章:

  • 基于人工势场法的水下机器人路径规划及体积范围考量研究(Matlab代码实现)
  • TaoCarts 反向海淘系统微服务架构设计:1688自动代采与高并发处理实战
  • 避开ZW3D方程式管理的那些“坑”:从变量类型到外部链接的避坑指南
  • 智能代理框架SA3P:构建可编程AI Agent的核心架构与实战
  • 2026年车间聚氨酯保温选型指南:粮仓聚氨酯保温施工、粮仓聚氨酯喷涂、粮库聚氨酯保温施工、粮库聚氨酯喷涂、罐体聚氨酯保温喷涂选择指南 - 优质品牌商家
  • Questlog:基于浏览器的个人知识库与任务管理工具全解析
  • 别再踩坑了!Dockerfile里用conda activate的正确姿势(附Miniconda3镜像实战)
  • Go语言集成Claude AI模型:非官方客户端go-claude-model实战指南
  • 为Claude Code编程助手配置Taotoken作为稳定的模型服务后端
  • 观测 Ubuntu 服务调用大模型 API 的延迟与用量情况
  • 终极跨平台流媒体下载指南:N_m3u8DL-RE使用完全手册
  • 科学燃脂的庖丁解牛
  • 为什么92%的AI团队在Docker 27升级后遭遇推理延迟飙升?3个被官方文档刻意弱化的调度陷阱全曝光
  • 创业团队如何借助 Taotoken 低成本验证多种大模型能力
  • STM32G431按键处理实战:从状态机到时间戳,三种消抖方案保姆级对比
  • 2026年靠谱毛发门店怎么选:白养黑/禾亚美加盟/禾亚美效果/禾亚美毛发管理中心/禾亚美白发养护/禾亚美门店/禾亚美产品/选择指南 - 优质品牌商家
  • Arm Cortex-A17处理器勘误解析与解决方案
  • 2026年4月四川成都做得好的钢结构二次防腐翻新企业推荐,钢结构二次防腐翻新企业,超强韧性,防水层不易开裂损坏 - 品牌推荐师
  • 对比使用 Taotoken 前后在模型 API 调用稳定性上的主观感受
  • McpHub:统一AI模型调度的模型上下文协议中心实践指南
  • Unity URP管线下实现Bloom效果实战:从Shader Graph到性能优化全流程
  • 从AC仿真到STB仿真:Cadence里放大器稳定性分析的保姆级避坑指南
  • jEasyUI 创建基础树形网格
  • 剪映自动化接口技术实现方案:Python驱动视频编辑系统化部署
  • 模具非标件报价-精密算盘智能体SOP
  • 图解PFNet的PM定位模块:用PyTorch代码复现通道与空间注意力机制
  • 别再乱选了!深度解读Vivado‘Scan and add RTL include files’与‘Add from subdirectories’的真实作用
  • 别再只写if-else了!用状态机重构你的51单片机避障小车程序(Keil uVision3实战)
  • 2026技术分享:喷塑桥架、托盘式桥架、梯式热浸锌桥架、梯式热镀锌桥架、梯式电缆桥架、槽式热镀锌桥架、槽式电缆桥架选择指南 - 优质品牌商家
  • 百度网盘解析工具终极使用指南:告别限速困扰的免费高速下载方案