什么是线程
是操作系统能够进行运算调度的最小单位。(例如: cpu 对前端发往后端的一个请求的处理叫一个线程)
什么是线程池
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。
关于这个线程池的概念,之前接触过相关的内容是sql连接池,这个是比较相近的内容,都是提前创建好连接对象,供程序使用。相当于是把每次创建这件事情前置,后续使用就特别方便,而且连接对象易于管理。
线程池的优势
降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;
提高系统响应速度,当有任务到达时,无需等待新线程的创建便能立即执行;
方便线程并发数的管控,线程若是无限制的创建,不仅会额外消耗大量系统资源,更是占用过多资源而阻塞系统或oom等状况,从而降低系统的稳定性。线程池能有效管控线程,统一分配、调优,提供资源使用率;
更强大的功能,线程池提供了定时、定期以及可控线程数等功能的线程池,使用方便简单。
学习demo,这里用的是FixedThreadPool线程池这种线程池应用于处理的任务固定。

public class ThreadDemo implements Runnable {
//锁存器
CountDownLatch latch;
public ThreadDemo(CountDownLatch latch){
this.latch=latch;
}
@Override
public void run() {
try {
testDemo();
latch.countDown();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
private void testDemo() throws InterruptedException {
sleep(100);
System.out.println("这是线程id"+Thread.currentThread().getId());
}
}
public class Demo01 {
static void test() throws InterruptedException {
ExecutorService excutorService = Executors.newFixedThreadPool(50);
final CountDownLatch latch=new CountDownLatch(100);
for (int i = 0; i < 100; i++) {
excutorService.submit(new ThreadDemo( latch));
}
try{
latch.await();
}catch (Exception e){
}
excutorService.shutdown();
}
public static void main(String[] args) throws InterruptedException {
long startTime=System.currentTimeMillis();
test();
long endTime=System.currentTimeMillis();
System.out.println("程序运行时间: "+(endTime-startTime)+"ms");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?