单独启动线程与使用线程池的区别

线程和线程池七大参数、线程池分类、运行原理详解,线程池的使用场景 文章目录1. 线程2. 线程池 1. 线程 1.1线程         线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模型,一个java线程对应一个OS线程,线程有多个生命状态 ①:NEW :新建 ②:RUNNABLE :运行 ③:BLOCKED :阻塞 ④:WAITING :等待 ⑤:TIMED_WAITING :超时等待 ⑥:TERMINATED :终结 其中运行又分为 就绪、运行中 阅读详情

一 概述

在我们的日常开发过程中,我们偶尔会遇到业务层中我们需要同时修改多张表的数据并且需要有序的执行,一般我们都会通过同步的方式,即单线程的方式来执行,可能会存在执行超时的异常,造成请求结果失败,即使成功了,前端也需要等待较长的时间来获取相应结果。

基于上述现象,我们就可以通过线程特性来进行一定的优化。

二 单独启动线程

为每个请求创建一个新线程的开销很大,为每个请求创建新线程的服务器,在创建和销毁线程上花费的时间和消耗的系统资源,要比花在处理实际的用户请求的时间和资源更多。

除了创建和销毁线程的开销之外,活动的线程同样消耗系统的资源。在一个JVM中创建太多的线程可能导致系统由于过度消耗内存而用完内存或是"切换过度"。为了防止资源不足,服务器应用程序需要一些办法限制任何给定时刻处理的请求数目。

线程池为线程声明周期开销问题和资源不足问题提供了解决方案,通过对多个任务重用线程,线程创建的开销被分摊到多个任务上。这样可以在请求到达时线程已经存在,所以无意中消除了线程创建所存在的延时问题,此时,我们就可以立即为请求服务,使应用程序效应更加快速,而且,通过适当地调整线程池中的线程数目,即当请求的数目超过某个阈值的时候,就强制其他任务新到的请求一致等待,直到获得一个线程来处理为止,从而防止资源不足。

待续

SpringBoot线程池的使用和扩展 阅读详情

相关推荐

电池管理系统(BMS)系列(四)—数据采集之温度

属于BMS系列文章,介绍了电池包温度采集相关方式

zxx52113140的博客 5456

对于选择单线程执行,采用线程池执行,以及采用直接new一个新线程执行的思考

在日常开发对于前后端交互的问题上,我们一般最常用的是使用一个线程来处理前台需要获取的数据,在处理完数据之后将结果立即返回至前台,但是存在这种场景,如果我们收到一个请求之后,我们需要做一些耗时的操作,比如说对于一件商品下订单的过程中我们可能需要的过程是下订单,发货,出快递单号等等一系列操作,但是在前台看起来我只需要下单只需要给我返回下单的结果和库存数减少即可,其他的复杂操作不需要反馈至前台页面这时我们可以用线程来进行异步操作,来保证前台页面得到及时的响应提高效率。但是在这个时候调用的异步线程是选用线程池还是n

weixin_39203501的博客 761

ModusToolbox 实战避坑指南|从环境配置到项目构建

本文是一份详尽的ModusToolbox实战避坑指南,手把手教你从环境配置到项目构建。重点解决了Windows系统下的安装、关键环境变量CY_TOOLS_PATHS的设置、PowerShell执行策略调整以及利用URL Modifier工具优化GitHub资源下载等核心难题,旨在帮助开发者,特别是英飞凌(Infineon)芯片用户,顺利搭建开发环境并成功运行第一个Hello World程序。

t1u2v的博客 590

关于Java多线程及线程池的使用

来源:https://mp.weixin.qq.com/s/TF04dB-i0q0-dOTqlprmYA 在项目里面为了提高性能往往会在主线程里面开启一个新线程去执行,这种做法最方便快捷,但是当用户量数据上涨,很显然每次去开启新的线程服务器往往会吃不消,这时就需要线程池来管理和监控线程的状态。 创建多线程的三种姿势 java 多线程很常见,如何使用多线程,如何创建线程,java 中有三...

爱拼才会win 315

如何适配自定义激光雷达数据到LIO-SAM:解决ring和time参数缺失问题

本文详细解析了如何将非标准激光雷达(如速腾、Livox)适配到LIO-SAM框架中,重点解决ring和time参数缺失问题。提供了从源码修改到通用适配中间件的多层级解决方案,并包含实机测试与性能调优指南,帮助开发者高效完成雷达数据适配。

weixin_42551227的博客 421

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测 目录时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测基本介绍ARIMAXVARVARMAVARMAXSESHWES参考资料 基本介绍 本文介绍ARIMAX、VAR、VARMA和VARMAX基本概念及其Python程序设计。 ARIMAX 具有外源回归量的自回归整合移动平均值(ARIMAX)是 ARIMA 模型的扩展,其还包括外生变量的建模。 外生变量也称为协变量,可以被认为是并行输入序列,其在与

前程算法屋的博客 6688

使用线程池比手动创建线程好在哪里?

为什么要使用线程池 在 Java 诞生之初是没有线程池的概念的,而是先有线程,随着线程数的不断增加,人们发现需要一个专门的类来管理它们,于是才诞生了线程池。没有线程池的时候,每发布一个任务就需要创建一个新的线程,这样在任务少时是没有问题的,如代码所示 /** *描述:单个任务的时候,新建线程来执行 */ publicclassOneTask{ publicstaticvoidmain(String[]args){ Threadthread0=...

vincent_wen0766的博客 918

封装POD与PinMap文件总结学习-20250516

芯片封装外形图(POD)和PinMap是芯片设计和制造中的关键文档。POD详细描述了芯片的物理尺寸、引脚布局和封装类型,而PinMap则提供了芯片封装上各个引脚的位置、名称和功能的详细信息。这些文档在芯片设计、制造和应用过程中起到“地图”的作用,帮助设计人员理解芯片的物理和电气特性。在PCB设计中,POD用于确定socket的footprint和pogo的选型,而PinMap则用于器件的合理布局和布线。这些信息对于确保芯片的正确安装和功能至关重要。

歌颂苦难的行为是无耻的; 2365

【图文详解】深入理解线程和线程池

【图文详解】深入理解线程和线程池

m0_60259116的博客 1342

嵌入式STM32F407CET6移植OpenHarmony系统方法

文件末尾添加:export PATH=~/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH。编译完成文件输出在LiteOs源码目录下out/STM32F407_ATK_Explorer文件夹中。②点击connect to the target,下方会自动显示识别出来的芯片型号以及flash大小。⑤点击program verify并点击start,等待烧写并校验完成,你就能看到程序正在运行了。,在选择刚才我们说的Huawei_LiteOS.hex文件。

嵌入式技术开发 546

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7445

线程池和单个线程的区别?

才能执行任务,当线程过多的时候,cpu会大量的浪费时间在这些线程从内核态到用户态,用户态到内核态的切换。1.单个线程创建成本比较高,每个线程占用1mb栈内存,每个线程都需要操作系统内核为其分配资源,2.线程池是管理线程的,会设置一个线程的上限,不会无限的创建,防止内存溢出。当阻塞队列满了,才会创建非核心线程,去执行任务,当最大线程数也满了。3.当核心线程数满了之后,再有新的任务进来会进入阻塞队列排队,,当线程完成任务后,不会销毁,而是回到线程池中,等待新的任务。

qq_21277357的博客 161

Android 14.0 SystemUI状态栏居中显示时间和修改时间显示样式

在14.0的系统rom定制化开发中,在systemui状态栏系统时间默认显示在左边和通知显示在一起,但是客户想修改显示位置,想显示在中间,所以就要修改SystemUI 的Clock.java 文件这个就是管理显示时间的,居中显示的话就得修改布局文件了

安卓兼职framework和app工程师的博客 978

【线程池】线程池的使用案例

多线程-- 线程池(1)自定义线程池(2)java自带的线程池 (1)自定义线程池 (1)为什么使用线程池 每一个线程的启动和结束都是比较消耗时间和占用资源的。使用线程池的过程中创建固定数量的线程,不用创建多余新的线程,而是循环使用那些已经存在的线程。 (2)自定义线程池设计思路 1-准备一个任务容器 2-一次性启动10个消费者线程 3-刚开始任务容器是空的,所以线程都wait在上面 4-直到一个外部线程往这个任务容器中扔了一个“任务”,就会有一个消费者线程被唤醒 5-这个消费者线程取出“任务”,并且执行这

weixin_44823875的博客 9534

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

多线程与线程池的区别(详细)

1、解决多任务同时执行的需求,合理使用CPU资源。 多线程的运行是由CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。2、由于不同进程中的线程可能并发执行,因而Windows支持进程间的并发性。此外,同一个进程中的多个线程可以分配给不同的处理器并且同时执行。一个含有多线程的进程在实现并发时,不需要使用多进程的开销。同一个进程中的线程可以通过它们的公共地址空间交换信息,并访问进程中的共享资源。不同进程中的线程可以通过在两个进程间建立的共享内存交换信息。3、并发与并行的关系:1、概念 一种线程使

weixin_42326851的博客 5300

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

线程池的使用

java中经常需要用到多线程来处理一些业务,我们非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险,这个时候引入线程池比较合理,方便线程任务的管理。java中涉及到线程池的相关类均在jdk1.5开始的java.util.concurrent包中,涉及到的几个核心类及接口包括:Executor、Executors、ExecutorService、ThreadPoolExecutor、F

xiaowang_lj的博客 6099

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

使用Executors类创建线程池的弊端以及与使用ThreadPoolExecutor类的区别

介绍: 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。 为什么要使用线程池? 这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处: 降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。 当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。 线程是稀缺资源,如...

SmallCarrot的博客 4519

线程,线程池的使用

本文详细的介绍了线程、线程池的相关知识以及其在项目中的使用!

一个很懒的人 1461

Java 线程池中 shutdown 与 shutdownNow 的区别是什么?

特性shutdown()接受新任务拒绝拒绝正在执行的任务继续完成尝试中断(取决于任务响应)队列中的任务执行完成移除并返回未执行任务列表状态转换RUNNING→SHUTDOWN→TERMINATEDRUNNING→STOP→TERMINATED返回值无未执行任务的关闭方式有序关闭强制关闭。

qq_63553317的博客 1537

线程池——线程池

本文主要讲线程池:1)线程池的引入;2)Java标准库中的线程池;3)ThreadPoolExecutor 构造方法和拒绝策略;4)实现一个简单的线程池

2301_76937176的博客 1166

Java使用线程池

ava虽然支持多线程,启动一个新的线程非常简单。但是频繁创建销毁线程需要消耗大量的系统资源(线程资源、栈空间等),更好的做法是使用【线程池】。

ThinkStu的博客 3万+

JAVA线程、线程池解析

是操作系统能够进行的最小单位,它被包含在进程之中,是进程中的实际运作单位。进程是资源分配的基本单位,它拥有自己独立的地址空间和各种资源;而线程是处理机调度的基本单位,它只能和其他线程共享进程的资源,而。线程的上下文切换速度比进程快。

柔丽君的博客 1413

java线程池shutdownnow后怎么再启动_线程池正确安全的关闭方式

上篇文章 ShutdownHook- Java 优雅停机解决方案 提到应用停机时需要释放资源,关闭连接。对于一些定时任务或者网络请求服务将会使用线程池,当应用停机时需要正确安全的关闭线程池,如果处理不当,可能造成数据丢失,业务请求结果不正确等问题。关闭线程池我们可以选择什么都不做,JVM 关闭时自然的会清除线程池对象。当然这么做,存在很大的弊端,线程池中正在执行执行的线程以及队列中还未执行任务将会...

weixin_39990250的博客 5013

多线程与线程池总结

先看几个概念: 线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。 多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。 线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程

小码农大梦想 3830

使用线程池比手动创建线程好在哪?

今天聊一聊为什么使用线程池比手动创建线程要好,具体好在哪里?

Java全能学习+面试指南 1367
上一篇: 回顾Java多线程编程——线程生命周期
下一篇: 回顾多线程编程——线程的优先级
至学者
博客等级 码龄9年 180粉丝 773原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值