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

java多线程与线程池-02线程池与锁

线程池与锁

第4章 线程池入门

4.1 ThreadPoolExecutor

ThreadPoolExecutor是应用最广的底层线程池类,它实现了Executor和ExecutorService接口。

4.1.1 创建线程池

下面创建一个线程池,通过调整线程池构造函数的参数来了解线程池的运行特性。把核心线程数设置为3,最大线程数设置为8,阻塞队列的容量设置为5。

(1)当要执行的任务数小于核心线程数时,直接启动与任务数相同的工作线程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lizYO2tW-1678433605839)(null)]

(2)当任务数量大于核心线程数时,超过核心线程数的任务会自动加入阻塞队列中,直到把阻塞队列装满

(3)当任务数大于“最大线程数+阻塞队列容量”时,会抛出RejectedExecutionException(拒绝执行任务)异常。当前线程池的设置参数,最大容量是8+5=13,当任务数超过13时,都会被拒绝。

4.1.2 关闭线程池

调用ThreadPoolExecutor的shutdown()方法或shutdownNow()方法,可以关闭线程池。

调用shutdown()方法后,原来提交的任务会被有序执行࿰

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

相关文章:

  • AB测试——流程介绍(设计实验)
  • C++中的智能指针有哪些?分别解决的问题以及区别?
  • 通达信捉妖改良CCI指标公式,简洁巧妙
  • 「Python 基础」面向对象编程
  • 【K3s】第23篇 一篇文章带你学习k3s私有镜像仓库配置
  • Redis学习【12】之Redis 缓存
  • Bootargs 参数
  • Mybatis框架源码笔记(七)之Mybatis中类型转换模块(TypeHandler)解析
  • 论文阅读《Block-NeRF: Scalable Large Scene Neural View Synthesis》
  • 【Matlab】如何设置多个y轴
  • 圆桌(满足客人空座需求,合理安排客人入座圆桌,准备最少的椅子)
  • 如何入门大数据?
  • 如何在Vite项目中使用Lint保证代码质量
  • Spark高手之路1—Spark简介
  • 社科院与杜兰大学金融管理硕士项目——人生没有太晚的开始,不要过早的放弃
  • Spatial-Temporal Graph ODE Networks for Traffic Flow Forecasting
  • IP协议+以太网协议
  • 可视化组件届的仙女‖蝴蝶结图、玫瑰环图、小提琴图
  • 人的高级认知:位置感
  • MATLAB——信号的采样与恢复
  • Docker Nginx 反向代理
  • 手把手教你实现书上的队列,进来试试?
  • 【springboot】springboot介绍
  • PMP项目管理项目整合管理
  • ADS中导入SPICE模型
  • C++:异常
  • 3.初识Vue
  • 【C语言复习】程序的编译与链接
  • Golang sql 事务如何进行分层
  • linux系统openssh升级