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

ThreadPoolExecutor线程池创建线程

线程池介绍

  • 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
  • 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
  • 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

线程池创建的两种方式

ThreadPoolExecutor类创建

    /*** 用给定的初始参数创建一个新的ThreadPoolExecutor。*/public ThreadPoolExecutor(int corePoolSize,//线程池的核心线程数量int maximumPoolSize,//线程池的最大线程数long keepAliveTime,//当线程数大于核心线程数时,多余的空闲线程存活的最长时间TimeUnit unit,//时间单位BlockingQueue<Runnable> workQueue,//任务队列,用来储存等待执行任务的队列ThreadFactory threadFactory,//线程工厂,用来创建线程,一般默认即可RejectedExecutionHandler handler//拒绝策略,当提交的任务过多而不能及时处理时,我们可以定制策略来处理任务) {if (corePoolSize < 0 ||maximumPoolSize <= 0 ||maximumPoolSize < corePoolSize ||keepAliveTime < 0)throw new IllegalArgumentException();if (workQueue == null || threadFactory == null || handler == null)throw new NullPointerException();this.corePoolSize = corePoolSize;this.maximumPoolSize = maximumPoolSize;this.workQueue = workQueue;this.keepAliveTime = unit.toNanos(keepAliveTime);this.threadFactory = threadFactory;this.handler = handler;}

简要说说我的理解,其中创建一个实例对象通常有以下4中构造方法,我们通常需要指定的是

  • corePoolSize:指定线程池核心线程数。
  • maximumPoolSize:线程池最大线程数。(和核心线程区别后面会讲)
  • keepAliveTime:非核心线程执行完某一任务后,任务队列中没有要执行的任务分配给改线程,该线程不会立即销毁,而是会等待,直到等待的时间超过了 keepAliveTime才会被回收销毁。
  • TimeUnit:顾名思义,时间单位。
  • workQueue:任务队列,是阻塞式的,用来存储待执行的任务。建议使用ArrayBlockingQueue,指定其大小,防止队列无限存储,产生OOM。
  • threadFactory:executor 创建新线程的时候会用到。
  • handler饱和策略。

http://www.lryc.cn/news/386569.html

相关文章:

  • 畅谈GPT-5
  • 石家庄高校大学智能制造实验室数字孪生可视化系统平台项目验收
  • WLAN 4-Way Handshake如何生成GTK?
  • Qt/C++模拟鼠标键盘输入
  • OpenGL3.3_C++_Windows(22)
  • electron-builder 打包过慢解决
  • leetcode226反转二叉树
  • 【自然语言处理系列】探索NLP:使用Spacy进行分词、分句、词性标注和命名实体识别,并以《傲慢与偏见》与全球恐怖活动两个实例文本进行分析
  • 【Rust】function和methed的区别
  • python基础语法 003-4 数据类型集合
  • Vue如何引用组件
  • vue3中省市区联动在同一个el-form-item中咋么设置rules验证都不为空的效果
  • 如何集成CppCheck到visual studio中
  • GWO-CNN-SVM,基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)
  • Go-知识测试-工作机制
  • 【小程序静态页面】猜拳游戏大转盘积分游戏小程序前端模板源码
  • JupyterServer配置
  • 信息检索(57):MINIMIZING FLOPS TO LEARN EFFICIENT SPARSE REPRESENTATIONS
  • Python 面试【中级】
  • [Open-source tool]Uptime-kuma的簡介和安裝於Ubuntu 22.04系統
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 灰度图像恢复(100分) - 三语言AC题解(Python/Java/Cpp)
  • leetcode494. 目标和
  • 数据结构简介
  • PyScript:在浏览器中释放Python的强大
  • 巴黎成为欧洲AI中心 大学开始输出AI创始人
  • 完全离线的本地问答模型LocalGPT如何实现无公网IP远程连接提问
  • 【算法专题--栈】栈的压入、弹出序列 -- 高频面试题(图文详解,小白一看就懂!!)
  • 如何高效安全的开展HPC数据传输,保护数据安全?
  • Java部分复习笔记整理
  • GoLang语言