线程池工作原理?

  • 线程池的工作原理:
    • 当任务过来时,如果线程池中的线程数小于核心线程数,就创建线程。(默认情况下,线程池不会预先创建线程,但可以配置
    • 当核心线程数满了以后,提交过来的任务会放到阻塞队列里。
    • 如果核心线程数满了,阻塞队列也放满了,就会继续创建新的线程,直至线程池的线程数量达到最大线程数。
    • 如果线程池中的线程数量已经达到了最大线程数,此时仍有任务提交过来,那么久要执行拒绝策略。
    • 如果线程的空闲时间超过了设定的空闲存活时间,并且线程池中的线程数量大于核心线程数时,就要销毁线程,直到等于核心线程数。(allowCoreThreadTimeOut设为true,也可以继续销毁空闲的核心线程

  • 线程池的相关参数设定:
    • 核心线程数  (线程池在运行过程中也可以修改)
    • 最大线程数
    • 空闲存活时间
    • 阻塞队列
    • 线程工厂
    • 拒绝策略

  • 以下参数在运行过程中,可以动态修改。(除了阻塞队列不可以修改)

  • 线程池生命周期
    • RUNNING 线程池可以接受新的任务并处理已提交的任务。
    • SHUTDOWN:通过shutdown()进入,该状态下线程池不再接收新的任务,但是会继续处理已提交的任务。
    • STOP:通过shutdownNow()进入,该状态下线程池会试图中断所有正在执行的任务,并清空阻塞队列。
      • 线程中断用的是Thread.interrupt()实现的,它的中断取决于在任务中是否实现具体的中断相应方式。如(interrupted),否则也无法强制中断。
      • shutdownNow() 会返回阻塞队列中所有未执行的任务。
    • TERMINATED:terminated()方法执行完毕后进入该状态,所有的任务处理完毕且线程池完全关闭后。

  • 线程池种类
    • newCachedThreadPool : 不限制线程数量,只要有新任务就会创建是线程,所以这里它用的是SynchronousQueue,空闲60秒线程就会回收。适合短期大量的并发任务。
    • newFixedThreadPool:线程数固定,线程会进行复用,线程都在忙,任务就会放进阻塞队列中。
    • newScheduledThreadPool:可以定时或固定周期的执行任务,线程池大小也可以指定。这里用到了DelayedWorkQueue。
    • newSingleThreadExecutor:只有一个线程,保证任务执行的顺序。

  • 拒绝策略
    • AbortPolicy 抛出异常
    • DiscardPolicy丢弃任务不抛异常
    • DiscardOldestPolicy丢弃最早的任务
    • CallerRunsPolicy由调用者线程执行任务,以达到减缓任务提交的效果
    • 实现RejectedExecutionHandler,进行自定义拒绝策略

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

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

相关文章

公司可以看到员工电脑在干嘛吗?四种监控员工电脑的方式

想象一下,你刚打开电脑,准备浏览最新的娱乐新闻,突然想到:“我的老板能看到我在干嘛吗?” 随着企业对工作效率和信息安全的关注日益增加,越来越多的公司开始采用各种方式来监控员工的电脑使用情况。 那么…

Java语言程序设计基础篇_编程练习题**18.38 (递归树)

目录 题目:**18.38 (递归树) 代码示例 代码逻辑解释 类定义和变量初始化 main 方法 start 方法 drawRecursiveTree 方法 输出结果 题目:**18.38 (递归树) 编写一个程序来显示一个递归树,如图18-20所示 代码示例 编程练习题18_38Re…

git push错误:Out of memory, malloc failed (tried toallocate 947912704 bytes)

目录 一、错误截图 二、解决办法 一、错误截图 因项目文件过大,http.postBuffer设置的内存不够,所以报错。 二、解决办法 打开cmd窗口,执行如下命令即可 git config --global http.postBuffer 1024000000 如图所示 执行完成以后&#…

ABAP 学习t-code DWDM

ABAP 学习t-code DWDM ,里面有很多例子展示,且能看到源代码

netty编程之我就非得用你,我用Java nio咋就不行?

写在前面 netty啊,我就非得用你,我用Java nio咋就不行? 1:我们都要做什么? 比如我们想要实现一个http的服务器,如果是直接基于Java nio来做的话,就需要来解析http协议,不小的工作…

第十七节 鼠标的操作与相应

知识点 -event代表鼠标事件类型 -EVENT_LBUTTONDOWN鼠标左键按下 -EVENT_LBUTTONUP鼠标左键抬起 -EVENT_LBUTTONMOVE鼠标及移动 Point sp(-1, -1); Point ep(-1, -1); Mat temp; static void on_draw(int event, int x, int y, int flags, void* userdata) { Mat imag…

通过 OBD Demo 体验 OceanBase 4.3 社区版

本文作者:马顺华 引言 OceanBase 4.3 是一个专为实时分析 AP 业务设计的重大更新版本。它基于LSM-Tree架构,引入了列存引擎,实现了行存与列存数据存储的无缝整合。这一版本不仅显著提升了AP场景的查询性能,同时也确保了TP业务场景…

RT-DETR

SSE represents the single-scale Transformer encoder,CSF represents cross-scale fusion. AIFI and CCFF are the two modules designed into 作者的 hybrid encoder 截止到发文时间的issue数,多吓人呐,不建议复现

从Servlet+JSP+JDBC到MyBatis:重构用户CRUD操作的高效之旅

前言 原生的JDBC: 原生的JDBC操作数据库,书写较为繁琐,降低开发效率。JDBC的局限性(如代码冗余、SQL语句与Java代码紧密耦合、难以维护等)。 相比于JDBC,Mybatis的优势: SQL与Java代码的分离、强…

性能测试工具——JMeter

目录 一、JMeter介绍 1、下载安装JMeter 2、打开JMeter 方式一: 方式二: 3、JMeter基础设置 4、JMeter基本使用流程 (1)启动JMeter (2)在测试计划下添加线程组 (3)在 “线…

Linux权限修改及管理员权限获取

在网上看到的,自己当作字典记录下来 修改文件权限:chmod 使用 chmod 可以修改文件权限。 两种方式:字母法与数字法 一,字母法修改文件权限 例如:文件名为 test.x 给文件 test.x 添加所有用户都能执行的权限&#x…

CSS简明通俗教程

CSS简明通俗教程 1. CSS简介 CSS(Cascading Style Sheets,层叠样式表)是一种样式表语言。CSS用于描述HTML或XML(包括SVG或XHTML等XML方言)文档的呈现方式,它有自己的语法规则和逻辑,用于控制网…

年薪40W!转AI产品经理后,我明白了有人带的意义在哪!

如果你正想转岗/入行产品经理,我的故事或许能给你一些启示👇 初识产品 目标有了,问题也有了 和很多人一样,毕业的时候比较迷茫,不知道自己喜欢什么行业、岗位… 就按照专业找了一个对口且擅长的算法工作&#xff0…

学习C#,视频、书籍、在线文档哪种是你喜欢的方式,80%的人竟然选择这个方式!

大家好,我是编程乐趣。 每一个人学习编程,选择的方式、习惯的方式可能都不一样,有些人喜欢买书、有些人喜欢看官方文档、有些人喜欢看视频。 哪一种方式,我个人认为都没问题,只要能获取知识就行。 下面一起看看Stac…

一带一路区块链样题解析(上)

一带一路区块链赛项样题解析 模块一 任务一:按要求完成 FISCO BCOS 区块链系统部署 (1)编写配置文档 1.根据题目设置各项要求,使用build_chain.sh离线搭建匹配的区块链,并通过命令配置各群组节点的MySQL数据库;(1分) cat >> ipconf <<EOF 127.0.0.1:3 …

基于C#+SQL Server2008实现(CS界面)学生宿舍管理系统

1 概述 本次课程设计是数据库课程设计&#xff0c;我选的是学生宿舍管理系统&#xff0c;功能块主要是宿舍管理、学生管理、出入登记和来访登记&#xff0c;目的在于将学生宿舍的管理实现信息化&#xff0c;监控学生宿舍的情况防止意外发生。 课程设计任务的需求分析 2.1设计…

中航资本:交易港股通,为什么刚买入就显示亏损?

经过港股通生意港股&#xff0c;刚买入就闪现亏本是因为买入港股时会有一个汇率差。 港股通生意选用的是港币报价、人民币结算的方式&#xff0c;港股通的参看本钱价是以港币核算的&#xff0c;触及买入时将港币换成人民币&#xff0c;卖出时将人民币换成港币的进程&#xff0…

Java语言程序设计基础篇_编程练习题18.36 (思瑞平斯基三角形)

目录 题目&#xff1a;18.36 (思瑞平斯基三角形) 代码示例 代码逻辑 1. 应用程序入口 2. GUI设置 3. 事件处理 4. 绘制逻辑 5. 递归绘制 输出结果 题目&#xff1a;18.36 (思瑞平斯基三角形) 编写一个程序&#xff0c;让用户输入一个阶数&#xff0c;然后显示填充的…

送书!一大波LLM大模型学习教程书籍

最近整理了日前市面上一大波大模型的书&#xff0c;已经打包成pdf了&#xff0c;大家有需要的&#xff0c;可以自行添加获取&#xff0c;纯福利&#xff0c;无套路&#xff0c;添加后说明是哪本书&#xff0c;会直接给大家&#xff01; &#x1f449;CSDN大礼包&#x1f381;&a…

国产SSL证书品牌怎么选择?

有人在歪曲大型央国企“信创化”与数字化转型建设思路&#xff0c;为了自身的利益开始造谣一些虚假传播信息国外SSL证书不安全问题&#xff0c;然而国外的SSL证书每个上网用户都在使用&#xff0c;然而发布虚假广告的一些人实际上是换了个马甲贴个名字就叫国产SSL证书了&#x…