001 线程池核心-线程池作用

        线程池,一说到这个词,大家很容易想到高并发等等各种脑补的场景。高并发其实是一个非常抽象的概念,要实现高并发其实不仅仅是一个JAVA 线程集合类、或者JAVA基础层面就能搞定的事情,在互联网大厂中,高并发其实涉及方方面面,从前端到后端,到支持高并发的中间组件,最后到数据存储,持久化层面等等,都需要对高并发做一些考量和设计,这也是我们后面专门开设高并发全面深入集训营的目标,就是为了让同学们全面的、系统的、深入的去学习高并发这门高深的技术栈!

 

线程池的作用,可以从几个角度去说明:

管理控制:从管理角度就是为了更好的控制线程,使用线程池来帮助我们去管理线程,使得我们对线程的生命周期、初始化、运行状态、销毁等各个环节有一个把控。

系统资源:从系统资源的角度考虑,线程池可以控制线程的数量,根据任务的多少去对线程池中的线程个数进行添加或者减少,可以回收空闲状态的线程,减少线程的频繁初始化和销毁,避免不必要的系统开销,节省系统资源,保障稳定性!

应用性能:从性能的角度去考虑,线程池可以配合高并发容器的设置,对任务和工作项进行缓存,异步的多线程的去处理任务,从而提高应用服务的吞吐率、消费性能,也从而提高单个线程的利用率。

兜底策略:从健壮性的角度去分析,线程池提供了很多拒绝策略,我们在任务过多或者处理不过来的时候,可以进行有效的拒绝策略、降级方案,以补偿的形式进行处理任务,避免因为线程池的问题对系统产生较为严重的影响。

扩展知识:

线程并发只是高并发的一个分支部分,高并发是很广义的词汇,他涉及了从前端到后端,从缓存到内存,从数据库的持久化存储到应用的查询分析等等都涉及到高并发;此处所说前端并非是界面或app端,而是LBS负载均衡组件,例如,Nginx,LES等等;前端要考虑的是可以承担大流量,接下来考虑应用服务如何承载这些流量,常用策略redis(流量过大也无法承载),主流方式将请求放在MQ中进行异步操作,慢速进行消费就可以做到入口级别的抗压,服务端高并发瓶颈解决后还要考虑内存级别或缓存级别的查询,有大流量的读请求,这时就要用到读写分离的机制,读写分离的概念并非单指数据库,应用程序同样存在;写可以直接写入数据库,利用分库分表的策略,把数据路由到各个数据库进行存储,这时候就要考虑数据库高并发解决方案了;读可以从redis读,redis如果性能不足可以走内存,如果还是有瓶颈那么在考虑加入其它中间件,例如,ElasticSearch,可以将一部分非即时数据放入ES中,比如用户下单两个月后,查询其历史数据,就可以用到;从性能考虑,即时数据一定要存在内存中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值