区分Java创建线程池、多线程

多线程是并发执行的能力;线程池是管理线程的容器,用来复用线程、避免频繁创建销毁线程。

上面的东西看不懂,本质还是对线程没有足够了解,任务执行在哪其实自己都不知道:

java 复制代码
//你熟悉的:
public void issue() {
    doA(); // 当前线程一步一步执行
    doB();
    doC();
}

谁调用 issue(),谁的线程就一行行跑 doA->doB->doC。比如 Tomcat 收到 HTTP 请求,就派一个 http-nio-8080-exec-1 线程来跑你的 Controller 方法。你打个断点看线程名,就是这个。

缺点:doB 要 2 秒,老板(这个请求线程)就卡 2 秒,啥也干不了。

这时候就可以用到线程池了:

你项目里的 ThreadPoolTaskExecutor 就是一个包工头 ,手下养着一批工人(线程) + 一个待办箱(BlockingQueue)。

java 复制代码
heavyPool.submit(() -> processChunk(chunk)); // 1. 把任务包成 Runnable 扔进队列

就(排队)能让线程池指认线程去干活了(这就是任务进入到到线程的入口)

但这只是多线程,还有的地方用到的是多线程池,其实道理是一样的,线程池里面的队列也是要排队的,本质都是把任务分开,不管是分到不同的线程还是不同线程池的队列

相关推荐
我命由我123459 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
学长毕设10 小时前
基于SpringBoot的网上流浪狗救助捐赠平台-附源码
java·spring boot·后端
VimorphTech10 小时前
文本已经改了,旧的音频生成结果还能回写吗?
java·数据库·mybatis
SL_staff10 小时前
BI项目90%失败?JVS三阶闭环实践:从数据打通到业务嵌入的技术路径
java·开源·全栈
aiks_yuan10 小时前
一个端口能被两个程序同时监听吗:SO_REUSEADDR、SO_REUSEPORT Java 实测和 Spring Boot 端口被占照样启动的坑
java
雷✘10 小时前
C++ 类与对象的初始化机制、成员访问边界与拷贝优化
java·网络·c++
JOEH6010 小时前
为什么你的消息队列总是丢消息?Java 后端 5 个经典坑
java·架构
程序员敲笔记10 小时前
Spring IoC 容器底层实现原理与 Bean 生命周期实战
java
niuyueyang11 小时前
MCP `/mcp/status` Lifecycle 技术方案
java·服务器·数据库
杨运交11 小时前
086-对象存储模块-基于Spring Boot的文件存储模块监控设计与实现
java·spring boot·后端