首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【零基础学java】(等待唤醒机制,线程池补充)

【零基础学java】(等待唤醒机制,线程池补充)

作者头像
北极的代码
发布2026-04-22 19:35:02
发布2026-04-22 19:35:02
550
举报
文章被收录于专栏:JavaSEJavaSE

等待唤醒机制

生产者和消费者(常见方法) void wait()当前线程等待,直到被其他线程唤醒 void notify()随机唤醒单个线程 void notifyAll()唤醒所有线程

等待唤醒机制的阻塞队列方式实现

put数据时:放不进去会等着,叫做阻塞

take数据时:取出第一个,取不到的等着

线程的六种状态

线程池

线程池的作用

 1减少线程创建和销毁的开销
  • 问题:每次需要任务时都创建新线程,完成后立即销毁,会消耗大量CPU和内存资源。
  • 解决:线程池复用已创建的线程,避免频繁创建/销毁。
2. 控制并发.数量,防止系统过载
  • 问题:无限制创建线程可能导致:
    • 内存耗尽
    • CPU过度切换(上下文切换开销大)
    • 系统不稳定
  • 解决:线程池设置最大线程数,控制同时运行的线程数量。
3. 提高响应速度
  • 任务到达时,通常已有空闲线程可以立即执行,无需等待线程创建。
4. 统一管理线程生命周期
  • 提供统一的调度、监控和资源回收机制。

二、核心作用

1. 资源复用
  • 线程作为系统稀缺资源,重复使用已创建线程。
  • 类似数据库连接池,避免频繁申请释放。
2. 流量控制(削峰填谷)
  • 当突发大量请求时,线程池通过队列缓冲:
    • 核心线程 → 队列 → 非核心线程(按配置策略)
  • 避免瞬时高峰压垮系统。
3. 提供灵活的任务调度策略
  • 支持多种队列(有界/无界、优先级队列)。
  • 支持拒绝策略(当队列满且线程达上限时的处理方式)。
4. 提高系统可管理性
  • 可监控线程状态、活动线程数、完成任务数等。
  • 便于调优和问题诊断。

运行过程

线程池的参数

创建线程池的对象

任务拒绝策略

线程池主要核心原理

①创建一个池子,池子中是空的 ②提交任务时,池子会创建新的线程对象,任务执行完毕,线程归还给池子 下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可 但是如果提交任务时,池子中没有空闲线程,也无法创建新的线程,任务就会排队等待

线程池的大小

线程池的缺点

  • 配置复杂(参数需要根据场景调优)
  • 不当配置可能导致:
    • 队列堆积 → 内存溢出
    • 线程数不足 → 响应慢
    • 线程数过多 → CPU过度切换
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 等待唤醒机制
  • 等待唤醒机制的阻塞队列方式实现
  • 线程的六种状态
  • 线程池
    •  1减少线程创建和销毁的开销
    • 2. 控制并发.数量,防止系统过载
    • 3. 提高响应速度
    • 4. 统一管理线程生命周期
  • 二、核心作用
    • 1. 资源复用
    • 2. 流量控制(削峰填谷)
    • 3. 提供灵活的任务调度策略
    • 4. 提高系统可管理性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档