当前位置:首页 > 经验 >

线程池架构原理图解(线程池工作原理及方法)

来源:原点资讯(www.yd166.com)时间:2022-11-03 05:27:26作者:YD166手机阅读>>

到这里,线程池中线程是如何执行任务、如何复用线程,以及线程空闲时间超限如何判断都已经清楚了。

最后,关于线程池的实现原理,我画了一张思维导图。ps:如果平台显示的不是高清图,可以在文末评论区或留言区@我,另外,本文全图文已收录到GitHub:wind7rui,后续其它内容也会更新到这里,欢迎follow、start。

线程池架构原理图解,线程池工作原理及方法(25)

聊一聊实战经验

使用构造方法创建线程池

细心的朋友会发现,全文竟没有介绍Executors,这个创建线程池的辅助工具类。是的,我强烈不推荐使用它,因为Executors中的newFixedThreadPool和newSingleThreadExecutor方法创建的线程池中,阻塞队列LinkedBlockingQueue的长度是Integer.MAX_VALUE,可能会堆积大量的任务,从而导致 OOM;而newCachedThreadPool方法创建的线程池中最大线程数是Integer.MAX_VALUE,会创建大量的线程,从而导致OOM。如果创建线程池,通过ThreadPoolExecutor的构造方法创建,这样使用这个线程池的人会更加明确线程池的各个参数的设置及运行方式,提前避免隐藏问题的发生。

使用自定义线程工厂

为什么要这么做呢?是因为,当项目规模逐渐扩展,各系统中线程池也不断增多,当发生线程执行问题时,通过自定义线程工厂创建的线程设置有意义的线程名称可快速追踪异常原因,高效、快速的定位问题。

使用自定义拒绝策略

虽然,JDK给我们提供了一些默认的拒绝策略,但我们可以根据项目需求的需要,或者是用户体验的需要,定制拒绝策略,完成特殊需求。

线程池划分隔离

不同业务、执行效率不同的分不同线程池,避免因某些异常导致整个线程池利用率下降或直接不可用,进而影响整个系统或其它系统的正常运行。

小结

实际工作中,我们经常使用线程池,对这块的要求不仅是常规的如何使用,原理我们也要清楚是怎么回事。同时,线程池工作原理和底层实现原理也是面试必问的考题,所以,这块是一定要掌握的。

说实话,为了画这些图消耗了不少休息时间,如果你在看,点个赞支持一下我的原创吧!

学之多,而后知之少!朋友们点赞 转发是我持续更新的最大动力,我们下期见!

往期推荐

,

栏目热文

线程池的原理及底层实现(线程池的结构和原理)

线程池的原理及底层实现(线程池的结构和原理)

作者:指尖上的榴莲www.jianshu.com/p/704a6c5d337c一.概述线程池,顾名思义就是存放线程的池子...

2022-11-03 05:47:00查看全文 >>

线程池实现的四种方式(线程池的四种状态)

线程池实现的四种方式(线程池的四种状态)

线程池的创建方式有四种,分别为手动创建,动态创建和自动生成。手动创建:创建方法有两种:(1)通过new来新建一个线...

2022-11-03 05:56:05查看全文 >>

线程池的七个参数(线程池各个参数含义)

线程池的七个参数(线程池各个参数含义)

所谓的线程池的 7 大参数是指,在使用 ThreadPoolExecutor 创建线程池时所设置的 7 个参数,如以下源...

2022-11-03 05:30:06查看全文 >>

高并发三种解决方法(大数据高并发解决方案)

高并发三种解决方法(大数据高并发解决方案)

一、什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通...

2022-11-03 06:02:03查看全文 >>

线程池的工作原理及图解(线程池源码深度解析)

线程池的工作原理及图解(线程池源码深度解析)

前言本文以程序员做需求的例子,比喻线程池的工作过程。以故事白话的方式展开,跟大家阐述线程池工作原理,以方便大家更好理解线...

2022-11-03 05:41:56查看全文 >>

线程池的使用实例(线程池的使用场景)

线程池的使用实例(线程池的使用场景)

线程池做什么: 网络请求通常有两种形式:第一种,请求不是很频繁,而且每次连接后会保持相当一段时间来读数据或者写数据,最后...

2022-11-03 05:37:09查看全文 >>

一张图看懂线程和进程(进程与线程通俗讲解)

一张图看懂线程和进程(进程与线程通俗讲解)

进程我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管...

2022-11-03 05:49:08查看全文 >>

线程池的四种实现方式(线程池创建的几种方法)

线程池的四种实现方式(线程池创建的几种方法)

不经常使用线程池的童鞋,还有对几种线程的使用不甚了解的童鞋,可以读一下此文,并关注后续线程池相关文章连载。本篇内容大纲:...

2022-11-03 05:36:42查看全文 >>

mycat和sharding优缺点(mycat的替代品)

mycat和sharding优缺点(mycat的替代品)

在我们的项目发展到一定阶段之后,随着数据量的增大,分库分表就变成了一件非常自然的事情。常见的分库分表方式有两种:客户端模...

2022-11-03 05:56:38查看全文 >>

线程池原理和实例(线程池的结构和原理)

线程池原理和实例(线程池的结构和原理)

前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调...

2022-11-03 06:03:39查看全文 >>

文档排行