随笔记——线程池

news2024/12/27 13:09:22

文章目录

  • 1 概览
  • 2 核心点
    • 2.1 使用线程池的好处
    • 2.2 如何创建线程池
    • 2.3 线程池的参数
    • 2.4 如何处理任务流程?
    • 2.5 如何关闭线程池
    • 2.6 拒绝策略
    • 2.7 线程池满了,会怎样?

1 概览

在这里插入图片描述

2 核心点

2.1 使用线程池的好处

  • 降低资源消耗:通过重复利用已经创建的线程,降低线程创建和销毁造成的资源消耗
  • 提高响应速度:当任务到达时,任务不需要等待创建线程就能立即执行
  • 统一进行线程管理:线程是稀缺资源,使用线程池可以进行统一分配、调优和监控

2.2 如何创建线程池

  • 原始:ThreadPoolExecutor()
  • newSingleThreadExecutor() 工作线程数目被限制为1。
  • newCachedThreadPool(): 用来处理大量短时间工作任务的线程池。会试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;如果线程闲置的时间超过60秒,则被终止并移除缓存;长时间闲置时,这种线程池,不会消耗什么资源。
  • newFixedThreadPool(int nThreads): 重用指定数据的线程,任何时候最多有nThread个工作线程是活动的。如果任务数量超过了活动队列数目,将在工作队列中等待空闲线程出现;如果有工作线程退出,将会有新的工作线程被创建。以补足指定数目的线程。
  • newScheduledTreadPool(int corePoolSize) : 进行定时或周期性的工作调度。
  • newSingleScheduledThreadExecutor() : 创建单线程,可以进行定时或周期性的工作调度。
  • newWorkStealingPool(int parallelism): 并行批量的处理任务,不保证处理顺序。

2.3 线程池的参数

  • corePoolSize: 核心线程数
  • maximumPoolSize: 线程池最大线程数
  • keepAliveTime: 空闲线程存活时间
  • unit: 空闲线程存活时间单位
  • workQueue: 工作队列
  • threadFactory: 线程工厂
  • handler: 拒绝策略

2.4 如何处理任务流程?

在这里插入图片描述

2.5 如何关闭线程池

调用 shutdown或shutdownNow方法关闭线程池。

2.6 拒绝策略

  • AbortPolicy: 终止策略,默认的拒绝策略。直接抛出RejectExecutionException。调用者可以捕获这个异常,然后根据需求编写代码。
  • DiscardPolicy: 抛弃策略。什么都不做,直接抛弃被拒绝的任务。
  • DiscardOldestPolicy: 抛弃最老策略。抛弃阻塞队列中最老的任务,相当于就是队列中下一个将要被执行的任务,然后重新提交被拒绝的任务。
  • CallerRunPolicy: 调用者运行策略。将任务退回到调用者,己不抛弃任务也不抛出异常。

2.7 线程池满了,会怎样?

如果使用的是无界队列,会继续添加到队列中;如果使用的是有界队列,会根据最大线程数来增加线程数量,如果增加了线程数量还是处理不过来,就会使用拒绝策略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Servlet程序创建步骤

1. 创建项目 使用 IDEA 创建一个 Maven 项目. 1) 菜单 -> 文件 -> 新建项目 -> Maven 2. 引入依赖 Maven 项目创建完毕后, 会自动生成一个 pom.xml 文件. 我们需要在 pom.xml 中引入 Servlet API 依赖的 jar 包. 1) 在 中央仓库 中搜索 "servlet", 一般…

android 系统安全内容总结

部分android系统安全内容网上已经存在,这里的android系统安全内容还是以经验总结为主,夹带不少引用,并形成个人的理解。 android安全内容学习需要一定基础,没接触安全的开发可以认识一下,接触过安全的可以对比安全上的理解。组建android系统安全讨论群进行维护更新android…

基于ssm高校科研成果管理系统 java ideamysql

(1)教师功能需求 教师进入系统可以查看个人中心、科研成果初审管理、科研成果终审管理、科研发布管理、留言板管理等操作。 (2)管理员功能需求 管理员登陆后,主要功能模块包括个人中心、教师管理、学院管理员管理、科…

linux Redis 搭建

命令下载:wget https://download.redis.io/releases/redis-6.2.6.tar.gz安装gcc:yum -y install gcc automake autoconf libtool make;进入src下make编译:make;make MALLOClibc(报错时执行)make install新建文件夹相关…

【Meta EnCodec源码分析】BitPacker功能介绍

二进制流 首先介绍一下二进制流。 假如有下4个数值 [ 47, 19, 38, 53 ]首先每个数字对应的二进制分别如下 十进制数值二进制数值470x0010 1111190x0001 0011380x0010 0110530x0011 0101 我们需要将这些数字保存到一个二进制文件中。 注:这里不考虑BigEndian还…

Centos使用lanproxy,搭建一个属于自己的内网穿透服务器(附转发失败解决方法),小白向

目录 前言 准备工作 搭建与使用 1. 安装git工具 2. 安装java环境 3. 安装maven工具 4. 搭建Lanproxy 5. 启动内网穿透服务 6. 设置开机自启 转发失败解决方法 前言 最近白嫖了7个月阿里云的服务器,顺带研究了一下,发现有挺多有趣又好玩的东西…

Acwing---1096. 地牢大师

地牢大师1.题目2.基本思想3.代码实现1.题目 你现在被困在一个三维地牢中,需要找到最快脱离的出路! 地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接通过,部分包含岩石障碍无法通过。 向北,向南&#xff0…

Redis基于docker跨服务器的一主两从三哨兵集群模式搭建

文章目录1 整体拓扑图2 redis与哨兵配置文件2.1 主节点配置文件2.1.1 主节点redis.conf配置文件2.1.2 主节点哨兵配置文件2.2 从节点配置文件2.1.1 从节点redis.conf配置文件2.1.2 从节点哨兵配置文件3 docke-compose编排文件4 启动并测试查看哨兵日志查看集群状态测试集群是否…

Spring源码分析 (Spring启动过程之容器对象的创建) (十五)

点进去 1.this() 2.注册配置类 3.refresh() Spring会将所有交由Spring管理的类,扫描其class文件,将其解析成BeanDefinition,在BeanDefinition中会描述类的信息,例如:这个类是否是单例的,Bean的类型,是否是懒…

导向滤波算法——OpenGL实现

导向滤波 一、介绍 导向滤波又称引导滤波,通过一张引导图片反映边缘、物体等信息,对输入图像进行滤波处理,使输出图像的内容由输入图像决定,但纹理与引导图片相似。 导向滤波的原理是局部线性模型,在保持双边滤波的优…

【学习笔记】多线程

1、线程基础 1.1 创建线程的几种方式 继承Thread 类,覆盖run方法实现Runable接口。实现run方法。然后 通过Thread类构造方法获取Thread对象。实现Callable接口。实现call方法。 call方法可以抛出异常。也可以有返回值。 run与start 调用run方法任然是主线程在执行。…

这个 Python 游戏库,打开就能玩一天

会 Python 的小伙伴,选择用 Python 让“大风车”吱呦呦地转!还有的小伙伴,选择用 Turtle 库绘制童年的卡通人物 我们其实还可以选择用 Python 开发小游戏,回忆童年的美好时光。 “凹凸版”吃豆子 这次并非用pygame制作的&#…

MyBatis超详细学习笔记(黑马)

目录 一、MyBatis快速入门 (一)打开MyBatis中文官网 (二)在工程中(pom.xml)导入MyBatis依赖 (三)编写MyBatis核心配置文件——替换连接信息,解决硬编码问题 &#x…

关于加强网络舆情监测的几点建议,TOOM强化舆情监控有方法

网络舆情监测是一项旨在通过监测网络上的舆情信息,了解社会舆论和网络话语状况,分析舆情动态,预测舆情走向,并进行舆情管控的工作。主要通过计算机技术和信息科学手段对网络信息进行收集、整理、分析和报告,以便于管理…

Golang - 操作Redis

Golang - 操作Redis go-redis是Golang语言连接、操作Redis服务的客户端,几乎包含了对Redis的所有操作,具体如下: 简单易用 兼容多种Redis部署架构,可用于Redis服务器、Redis群集、Redis Sentinel,甚至Redis服务器环go-redis 支持…

配置TF-A源码

配置TF-A源码 1.对tf-a源码进行解压 $> tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz 2.打补丁 进入/home/ubuntu/FSMP1A/tf-a-stm32mp-2.2.r2-r0/tf-a-stm32mp-2.2.r2目录 执行 for p in ls -1 ../*.patch; do patch -p1 < $p; done 3.配置工具链 1)进入/home/ubuntu/FS…

05 CSS-CSS语法【尚硅谷JavaWeb教程】

05 CSS-CSS语法【尚硅谷JavaWeb教程】 JAVAWEB的学习笔记 学习视频来自&#xff1a;https://www.bilibili.com/video/BV1AS4y177xJ/?vd_source75dce036dc8244310435eaf03de4e330 为什么需要CSS 传统的园区网络采用设备和链路冗余来保证高可靠性&#xff0c;但其链路利用率低、…

Task7:动态函数

目录注意一 Filter函数二 Subtotal函数注意 filter&#xff0c;目前只有office365支持 一 Filter函数 作用&#xff1a;需要根据指定的条件&#xff0c;将符合条件的所有记录从数据源表格式查找过来之前方法&#xff1a; 用高级筛选&#xff08;缺点&#xff1a;在查询下一个…

SAP ADM100-Unit4 数据库工作原理:中央数据库管理与DBA Cockpit

概览 本节介绍DBA Cockpit,介绍SAP环境下数据库管理和监控的要点。 使用DBA Cockpit计划日历去计划数据和日志信息的周期性备份。 课程目标 备份数据库内容 检查数据库备份是否成功被执行。 1、DBA Cockpit总览 为了最少的系统停机时间和更高的系统性能,必须计划定期的…

云计算|OpenStack|社区版OpenStack安装部署文档(一 --- 前期硬件准备和部署规划)

前言&#xff1a; 社区版OpenStack是比较难以安装部署的&#xff0c;本文将就安装部署做一个详细的说明。 首先&#xff0c;OpenStack社区版本众多&#xff0c;如何选择一个合适的版本是第一个要解决的问题&#xff08;这里的合适是指的OpenStack版本和操作系统的版本合适&am…