细说线程池--中级篇

线程池的实现原理分析

线程池的基本使用我们都清楚了,接下来我们来了解一下线程池的实现原理ThreadPoolExecutor是线程池的核心,提供了线程池的实现。ScheduledThreadPoolExecutor继承了 ThreadPoolExecutor,并另外提供一些调度方法以支持定时和周期任务。

Executers 是工具类,主要用来创建线程池对象我们把一个任务提交给线程池去处理的时候,线程池的处理过程是什么样的呢?首先直接来看看定义

image

线程池流程图

关注点在于execute方法,然后我们可以使用一个流程图来描述,整个线程池的整体状况:

线程池原理分析( newFixedThreadPool)

image

线程池就在生活中

小工厂生产汽车零件

工厂--线程池

正式员工---核心线程数

临时员工----最大线程数-核心线程数

工位或者场地---硬件资源

工厂生产汽车的零件,正常情况下,正式员工是能完成零件的生产,但是由于生意火爆,需要生产更多的零件,这是工厂就把接到的单存放起来,让正式员工加班加点的干,但是发现存放的单实在是太多了,这时候就得请临时工入场帮忙生产零件,解决那么存放的零件单。临时工人数也不能太多了,因为工厂场地有限(工位有限)。如果正式员工和临时工一起加班加点的生产,还是跟不上接到的零件单,对不起,我工厂真的无能为力,这时候工厂就得采取拒绝策略。

人力外包

当今社会上,很多人力外包的,比如说:人工客服。虽然现在也流行起人工智能客服,但是人力外包依然存在。

A公司请了10个客服,专门用来解决用户遇到的问题和投诉的。正常情况下,10个客服能应对所有客户的问题和投诉,但是一旦某个产品出问题较多,这时候10个客服就明显忙不过来了,但是还是能应付的,只是很多时候不能及时回复客户。祸不单行,这段时间用户使用的系统老是挂掉,产品不行+系统不稳定。导致客户收到反馈明显延迟的太久,这时候,A公司领导觉得请临时工来帮忙解决问题,因为A公司只能容纳下15个客服,但是15个完全是不能解决问题的,这时候就得采取拒绝了,反馈说我这边已经处理不了太多问题了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 线程池是Java中的一个重要概念,从Android上来说,当我们跟服务端进行数据交互的时候我们都知道主线程不...
    老实任阅读 1,284评论 1 9
  • 一、线程池简介 Java并发编程中,我们常常使用以下两种方法来开启一个新的线程来并发完成某些任务: 写一个Thre...
    邱simple阅读 1,419评论 0 2
  • 本篇文章已授权微信公众号 hongyangAndroid (鸿洋)独家发布 0. 序言 在Java中,使用线程来异...
    付凯强阅读 4,071评论 0 10
  • 线程池简介 使用线程池可以很好的提高性能,线程池在运行之初就会创建一定数量的空闲线程,我们将一个任务提交给线程池,...
    mghio阅读 250评论 0 1
  • 线程池(Thread Pool):顾名思义,就是类似于一个充满了线程的池子,它其实是一种线程的使用模式,是一种池化...
    still_loving阅读 496评论 0 2