2026/5/21 20:52:04
网站建设
项目流程
网站打开不了怎样做,网络营销的概念是什么,个人域名怎么做网站,网页设计制作与代码整体素材目录
一、为什么要用线程池#xff1f;线程池的优势是什么#xff1f;二、线程池的几个重要参数介绍#xff1f;三、线程池的执行流程#xff1f;/一个任务进来的处理流程#xff1f;四、如何关闭线程池#xff1f;五、如何合理配置线程池#xff1f;
一、为什么要用线…目录一、为什么要用线程池线程池的优势是什么二、线程池的几个重要参数介绍三、线程池的执行流程/一个任务进来的处理流程四、如何关闭线程池五、如何合理配置线程池一、为什么要用线程池线程池的优势是什么线程池主要的工作是控制运行的线程数量处理过程中将任务放进队列里然后在线程创建后启动这些任务如果线程数量超过了最大数量的线程排队等候等其他线程执行完毕再从队列里取出任务来执行。主要特点线程复用、控制最大并发数、管理线程1降低资源消耗通过重复利用已创建的线程降低线程创建和销毁造成的损耗2提高响应速度当任务到达时任务可以不需要等到线程创建就可以执行3提高线程的可管理性。线程是稀缺资源如果无限制的创建不仅会消耗系统资源还会降低系统的稳定性使用线程池可以进行统一的分配、调优和监控。线程池是一个管理线程的池子。由于创建和关闭线程需要花费时间如果为每一个任务都创建一个线程非常消耗资源。使用线程池可以避免增加创建和销毁线程的资源消耗提高响应速度且能重复利用线程。在使用线程池后创建线程就变成了从线程池中获取空闲线程关闭线程变成了向线程池归还线程。二、线程池的几个重要参数介绍public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueueRunnable workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)参数作用常用值/配置建议注意事项核心线程数 (corePoolSize)线程池中常驻的线程数量空闲时也不会销毁除非开启超时- CPU密集型CPU核心数 1- I/O密集型CPU核心数 * 2可调用allowCoreThreadTimeOut(true)允许核心线程超时销毁最大线程数 (maximumPoolSize)线程池允许创建的最大线程数量需结合系统资源评估如内存、任务类型设置过高可能导致内存溢出或频繁上下文切换阻塞队列 (workQueue)缓冲待执行任务的阻塞队列-ArrayBlockingQueue由数组实现的有界队列按FIFO排序-LinkedBlockingQueue链表结构的无界队列按FIFO排序-PriorityBlockingQueue优先级队列-SynchronousQueue另一个线程移除操作后直接传递无界队列需防OOM有界队列需合理设置容量空闲线程存活时间 (keepAliveTime)非核心线程空闲时的存活时间超时后销毁通常设为60秒根据任务提交频率调整单位需通过TimeUnit指定秒、毫秒等时间单位(TimeUnit unit)指空闲线程存活时间的单位枚举类型TimeUnit类单位需通过TimeUnit指定秒、毫秒等线程工厂 (ThreadFactory)定制线程的创建过程命名、优先级、守护线程等示例new ThreadFactoryBuilder().setNameFormat(pool-%d).build()合理命名线程便于监控避免创建过多非守护线程导致JVM无法退出拒绝策略 (RejectedExecutionHandler)当队列和线程池均满时处理新任务的策略-AbortPolicy默认抛出runtime异常,阻止程序运行-CallerRunsPolicy由提交者执行-DiscardPolicy默认丢弃不予处理-DiscardOldestPolicy丢弃任务队列中等待最久的任务需根据业务容忍度选择策略未显式配置时默认抛出RejectedExecutionException三、线程池的执行流程/一个任务进来的处理流程1在创建线程池后等待提交过来的任务请求2当调用execute()方法添加一个请求任务时线程池会做如下判断如果正在运行的线程数量小于corePoolSize那么马上创建核心线程运行这个任务如果正在运行的线程数量大于或者等于corePoolSize那么将这个任务放入任务队列中如果任务队列满了且正在运行的线程数量小于maximumPoolSize(最大线程数)那么创建一个非核心线程立刻运行这个任务如果任务队列满了且正在运行的线程数量大于或等于maximumPoolSize线程池会执行拒绝策略3当一个线程完成任务时会在队列中取下一个任务来执行4当一个线程无事可做超过一定时间时线程池会停掉。四、如何关闭线程池可以通过调用线程池的shutdown或shutdownNow方法来关闭线程池。它们的原理是遍历线程池中的工作线程然后逐个调用线程的interrupt方法来中断线程所以无法响应中断的任务可能永远无法终止。shutdown:将线程池状态置为shutdown,并不会立即停止:1.停止接收外部submit的任务2.内部正在跑的任务和队列里等待的任务会执行完3.等到第二步完成后才真正停止。shutdownNow:将线程池状态置为stop。一般会立即停止事实上不一定:1.和shutdown(一样先停止接收外部提交的任务2.忽略队列里等待的任务3.尝试将正在跑的任务interrupt中断4.返回未执行的任务列表。区别shutdownNow:能立即停止线程池正在跑的和正在等待的任务都停下了。这样做立即生效但是风险也比较大。 shutdown:只是关闭了提交通道用submit()是无效的;而内部的任务该怎么跑还是怎么跑跑完再彻底停止线程池。五、如何合理配置线程池分两种CPU密集和IO密集线程池究竟设置多大要看你的线程池执行的什么任务了有CPU密集型和IO密集型任务类型不同分配的线程池大小不同。1CPU密集CPU密集的意思是该任务需要大量的运算而没有阻塞CPU一直全速运行。CPU密集任务只有在真正的多核CPU上才可能得到加速(通过多线程)而在单核CPU上无论你开几个模拟的多线程该任务都不可能得到加速因为CPU总的运算能力就那些。CPU密集型任务应配置尽可能小的线程一般公式是配置CPU核数1个线程的线程池2IO密集IO密集型即该任务需要大量的IO即大量的阻塞。在单线程上运行IO密集型的任务会导致浪费大量的CPU运算能力浪费在等待。所以在IO密集型任务中使用多线程可以大大的加速程序运行即时在单核CPU上这种加速主要就是利用了被浪费掉的阻塞时间。方法一可以使用较大的线程池一般CPU核心数 * 2IO密集型CPU使用率不高可以让CPU等待IO的时候处理别的任务充分利用cpu时间IO的处理时间越长可以设置越多的线程个数。**方法二**线程等待时间所占比例越高需要越多线程。线程CPU时间所占比例越高需要越少线程。比如平均每个线程CPU运行时间为0.5s而线程等待时间非CPU运行时间比如IO为1.5sCPU核心数为8那么根据上面这个公式估算得到((0.51.5)/0.5)832。这个公式进一步转化为最佳线程数目 线程等待时间 / 线程CPU时间 1 CPU数目。生产环境如何获得做最合适的线程呢做压力测试。Java开发的就业市场正在经历结构性调整竞争日益激烈传统纯业务开发岗位如仅完成增删改查业务的后端工程师的需求特别是入门级岗位正显著萎缩。随着企业技术需求升级市场对Java人才的要求已从通用技能转向了更深入的领域经验如云原生、微服务或前沿的AI集成能力。这也导致岗位竞争加剧在一、二线城市求职者不仅面临技术内卷还需应对学历与项目经验的高门槛。大模型为核心的AI领域正展现出前所未有的就业热度与人才红利2025年AI相关新发岗位数量同比激增543%单月增幅最高超过11倍大模型算法工程师位居热门岗位前列。行业顶尖人才的供需严重失衡议价能力极强跳槽薪资涨幅可达30%-50%。值得注意的是市场并非单纯青睐算法研究员而是急需能将大模型能力落地于复杂业务系统的工程人才。这使得具备企业级架构思维和复杂系统整合经验的Java工程师在向“Java大模型”复合人才转型时拥有独特优势成为企业竞相争夺的对象其薪资天花板也远高于传统Java岗位。说真的这两年看着身边一个个搞Java、C、前端、数据、架构的开始卷大模型挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis稳稳当当过日子。结果GPT、DeepSeek火了之后整条线上的人都开始有点慌了大家都在想“我是不是要学大模型不然这饭碗还能保多久”先给出最直接的答案一定要把现有的技术和大模型结合起来而不是抛弃你们现有技术掌握AI能力的Java工程师比纯Java岗要吃香的多。即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇如何学习AGI大模型作为一名热心肠的互联网老兵我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享