线程池的应用

news/2024/12/5 4:46:52/

首先在源码中我们知道了,线程池的添加线程,就是添加worker类到map里

然后运行worker里面的run方法,可通过创建线程池的时候,指定worker的容量,也就是线程池大小:

 

  ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2,5,1,TimeUnit.SECONDS,new ArrayBlockingQueue<>(3),Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());

从上至下依次是:

核心线程数量

最大线程数量

超时时间

时间单位

阻塞队列

线程工厂

拒绝策略

 核心线程指的是在请求不多的时候,只有这么多线程是活的

最大线程指的是线程池的最大容量

在请求很多的时候,核心线程已经满了,并且阻塞队列也满了,就会开启(最大线程数量-核心线程数量)的非核心线程,前提是阻塞队列已经满了。这就是开启非核心线程的前提条件。

超时时间则是:非核心线程空闲下来了,一旦空闲时间达到了这么久,就回收它。

拒绝策略也很有意思:

这次调用如果:阻塞队列满了报错(丢弃)、不报错(丢弃)、谁调用就让它自己执行、尝试获取闲暇的线程池执行。

线程池数量的定义:

使用最大cpu核心数量为最佳。


http://www.ppmy.cn/news/1134396.html

相关文章

【Python 基础 2023 最新】第七课 Pandas

【Python 基础 2022 最新】第七课 Pandas 概述Pandas 是什么?Pandas 的应用场景安装 Pandas Pandas 数据结构Series 数组什么是 Series?Series 创建 Series 数组操作数据检索数据修改过滤Series 数组运算总结 什么是 DataFrameDataFrame 创建 DataFrame 操作数据检索筛选数据…

yum命令

title: yum命令 createTime: 2020-10-29 18:05:52 updateTime: 2020-10-29 18:05:52 categories: linuxyum tags: yum 命令 yum相关例子 一、只下载不安装 yum install --downloadonly --downloaddir/soft/mysql mysql-community-server 只是下载 不安装 二、删除的例子 …

GraphPad Prism 10 for Mac(统计分析绘图软件)

GraphPad Prism是一款专业的统计和绘图软件&#xff0c;主要用于生物医学研究、实验设计和数据分析。 以下是 GraphPad Prism 的主要功能和特点&#xff1a; 数据导入和整理&#xff1a;GraphPad Prism 可以导入各种数据格式&#xff0c;并提供直观的界面用于整理、编辑和管理数…

网盘搜索引擎:点亮知识星空,畅享数字宝藏!

大家好&#xff01;作为一名资深的网络产品运营人员&#xff0c;我今天要向大家介绍一款让你受益匪浅的神奇工具——网盘搜索引擎&#xff01;它可以帮助你免费搜索查询各种云盘共享资源&#xff0c;包括影视作品、纪录片、小说、动漫等等。现在&#xff0c;我们急需网络流量&a…

junit @ExcludePackages排除多个包

在JUnit中&#xff0c;可以使用ExcludePackages注解来排除多个包。该注解可以用在测试类或测试方法上。 如果要排除多个包&#xff0c;可以在ExcludePackages注解的value属性中使用数组来指定要排除的包名。例如&#xff0c;要排除包com.example.package1和com.example.packag…

SpringBoot终极讲义第二章笔记

01.关于Import 和 ImportResource Import注解用法(类上): 一般和Configuration一起使用,用来导入里面Bean方法返回的对象 ImportResource(类上):一般和Configuration一起使用,用来导入某个.XML文件里的bean 个人觉得这两个注解有点鸡肋 SpringBoot启动类默认扫描的是启动类…

普通人需要做副业吗?有什么合适的副业

普通人现在需要做副业吗&#xff0c;我觉得有这个必要&#xff0c;当然也要根据个人情况选择&#xff0c;那么做副业有什么好处呢&#xff1f;做副业可以带来额外的收入&#xff0c;增加灵活性&#xff0c;提升技能&#xff0c;发展创造力&#xff0c;降低风险&#xff0c;提供…

Mysql以key-val存储、正常存储的区别

场景 你作为一个服务端工程师&#xff0c;假设产品要求设计这么一个页面&#xff0c;页面上包含很多模块&#xff0c;每个模块都可以单独进行变更&#xff0c;有些模块是富文本。 实现方式有很多&#xff0c;我们来聊比较常用的两种&#xff0c;看看mysql的表如何设计。 第一…