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

做百度移动网站点击电脑有网

做百度移动网站点击,电脑有网,一人之下王也,关键词优化推广排名一、线程池的核心价值 池化思想通过资源预分配与复用提升效率,线程池将线程预先创建并管理,避免了频繁申请/销毁线程的系统调用开销。相较于每次从内核态创建线程,线程池操作完全在用户态完成,具有更高的可控性和执行效率。 二、…

一、线程池的核心价值

池化思想通过资源预分配与复用提升效率,线程池将线程预先创建并管理,避免了频繁申请/销毁线程的系统调用开销。相较于每次从内核态创建线程,线程池操作完全在用户态完成,具有更高的可控性和执行效率。


二、ThreadPoolExecutor核心参数详解

参数作用
corePoolSize核心线程数(常驻线程,即使空闲也不会回收)
maximumPoolSize最大线程数(核心线程+非核心线程),支持动态扩容
keepAliveTime非核心线程空闲存活时间(超时自动回收)
workQueue任务队列(缓冲待执行任务),常用实现:LinkedBlockingQueue(无界队列)
threadFactory线程工厂(定制线程属性如名称、优先级)
handler拒绝策略(队列满且线程达上限时的处理逻辑)

三、线程池工作流程(生产者-消费者模型)

  1. 任务提交:调用 submit()execute() 提交 Runnable 任务。
  2. 资源分配
    • 若核心线程未满 → 立即创建新线程执行
    • 若核心线程已满 → 任务进入工作队列等待
    • 若队列已满且线程未达到最大数 → 创建非核心线程执行
    • 若队列已满且线程已达上限 → 触发拒绝策略
  3. 线程回收:非核心线程在空闲超过 keepAliveTime 后被销毁。

四、Executors快速创建线程池

1. 缓存型线程池(适合短时高并发)

ExecutorService cachedPool = Executors.newCachedThreadPool();
  • 特点:最大线程数 Integer.MAX_VALUE(可无限扩容),空闲线程60秒回收。
  • 风险:任务量暴增时可能耗尽系统资源。

2. 固定型线程池(适合长期稳定负载)

ExecutorService fixedPool = Executors.newFixedThreadPool(8);
  • 特点:核心线程数=最大线程数(无扩容),使用无界队列 LinkedBlockingQueue
  • 风险:队列无限增长可能导致OOM。

3. 其他工厂方法

  • 单线程池Executors.newSingleThreadExecutor()(串行执行)。
  • 定时任务池Executors.newScheduledThreadPool()(延迟/周期性任务)。

五、线程池配置

1. 线程数设置

通过实验的方式找到合适的线程池个数:给线程池设置不同的线程数,分别进行性能测试,关注响应时间/消耗的资源,挑选一个合适的数值。

2. 拒绝策略选择

策略行为特点适用场景
AbortPolicy(默认)抛出 RejectedExecutionException需快速感知系统过载
CallerRunsPolicy由提交任务的线程执行被拒任务保证任务不丢失,降级处理
DiscardOldestPolicy丢弃队列最老任务,尝试提交新任务容忍数据延迟,优先处理新请求
DiscardPolicy静默丢弃新提交任务极端过载保护

六、线程池使用示例

// 自定义线程池(规避无界队列风险)
ThreadPoolExecutor customPool = new ThreadPoolExecutor(4,  // corePoolSize8,  // maximumPoolSize30, TimeUnit.SECONDS,new ArrayBlockingQueue<>(1000),  // 有界队列Executors.defaultThreadFactory(),new ThreadPoolExecutor.CallerRunsPolicy()
);// 提交任务
customPool.submit(() -> {System.out.println(Thread.currentThread().getName() + "执行任务");
});// 终止线程池里的所有线程
customPool.shutdown();

结语

线程池是并发编程的基石,理解其参数与工作机理能有效避免资源耗尽与性能瓶颈。

http://www.dtcms.com/a/601695.html

相关文章:

  • 如何高效设置机器学习超参数?——借鉴成熟AutoML框架的实践
  • python学习之路(七)
  • 长沙网站公司网站建设wordpress 分享到微信二维码
  • 主流的⼤语⾔模型
  • 03-事务高频面试总结
  • Go语言编译原理解析 | 提升开发效率的实用指南
  • html网站完整代码天元建设集团有限公司成立时间
  • 咨询转化率涨35%,声网AI客服拯救跨境生意
  • 培训系统哪家好?TOP10企业培训系统推荐!
  • 找网站推广做网站的法律
  • 基于Gradient Boosting模型的关键驱动因素分析:Permutation、SHAP与PDP/ALE的组合方法研究
  • lockdep状态相关定义如LOCK_ENABLED_HARDIRQ
  • seo优化网站查询网站流量狂刷器
  • 网页制作门户网站案例joomla 2.5:你的网站建设_使用与管理
  • BUUCTF-Misc
  • DFS-排列数字和n皇后-java实现
  • 3.2 自注意力与多头注意力:并行计算不同特征的秘密武器
  • 宁夏建设教育协会网站如何建立公司邮箱
  • 基于昇腾 配置pytorch环境
  • 武威做网站品牌平价网站建设
  • SpringBoot19-@Qualifier用法
  • 工程公司的会计做账有哪些科目官网seo怎么做
  • C语言:一种编译器?| 深入探讨C语言编译器的工作原理与发展
  • SpringBoot+Vue智慧诊所管理系统
  • 企业网站建设价钱专业的家居行业网站开发
  • 解决Idea 插件Plantuml4idea找不到dot的问题
  • 杭州英文网站建设网站建设项目考察范文
  • 济南建设工程信息网站手机刷网站排名软件
  • docker搭建Elasticsearch+Kafka+Logstash+Filebeat日志分析系统
  • Linux离线安装Python环境