00:00
好,那么各位同学刚才带着大家呢,复习串讲了,详细的说了回报的一些技术细节和生成的原理。那杨哥我咱们现在这道题目不是说线程池吗?你你干嘛要花那么大的代价,先说了一下回接口,这是为什么呢?那么这个时候,同学们。老。下面。昨天。线程池理论优势以讲刚才复习了回补接口一位线程池,它里面的线程同时支持两种。有反馈制和没反馈制,那么所以说带带带大家复习。好,那么线程池怎么来的呢?由于之前杨哥或多或少给大家讲过GOUC。当时介绍过多线程的实现,那么这个时候我们直接架构说话。首先Java中线程池啊,是通过这个框架实现的。用到了这个。
01:01
这个注意。什么鬼?是不是用屁股后面带S了?什么意思呢?在教学过程当中,杨哥给大家说过。阿瑞有工具类阿瑞没问题吧。Collection接口。集合呢,那么一样。我们现在呢,所要完成和处理的事情呢?也就是说。整个架构。由这个顶级接口,可以把它理解为collection接口。这货是个什么list接口?接下来。这个是带时间调度的。那么最终我们核心重点干嘛呢?俩。第一个。这个。第二个th pro。
02:00
X线程池的执行内。好,烦请各位同学。我暂停一下录屏,要求大家做20秒钟的课堂练习,请把这个类名打一下,因为项目经理问你线程池时,一句话告诉他线程池的底层就是这个类。我们先把总纲。搞定。大家做一下课堂练习,你敲键盘或者写在纸上都可以,就写一下这个类的名字,如果可以写三遍。学硕豪。开高,那么下面呢,我们就会明白。根据前面的基础和现在杨哥对面试题串讲的深度复习。这个。这个比较重要,同学们言下之意啥意思呀?跟刚才的一样。数组集合类线程池。干嘛都可以有屁股后面带S的这样的辅助工具类。
03:01
来给你进行加深和扩张。比如说同学们。弟兄们肯定干过这活,List string弟兄们干没干过?List等于六阿瑞list没问题吧?接下来什么list.abc加三个秒懂。但是。你这么干不是不可以。请看。s.at the list a。C一行是不是写完,那么言下之意,兄弟们,这个S是不是就是这样的一种辅助工具类的意思,好吧,那么这个讲过,这个讲过,尤其这个collection是接口collection s是集合类的什么?辅助工具呢,那么。一样线程线程12也有对应的S2辅助工具类,好,那么呢,不废话,直接开打。看完它的技术架构以后,我们就闹闹编码实现。第一个它有多少种?
04:01
首先。总共有。五种。这个是带调度的,什么叫调度啊,就是线程池里面我们设定一个时间参数,比如说。池子里面的请求我每两秒钟或者每间隔一秒钟执行一次,OK,好,只要带着这个sta调度的意思,那么这个是带时间的。第二个JAVA8新推出的这个是什么?New pro,这个什么概念呢?增强型的功能。可以用处理器作为它的并行级别,这个我们不再展开,等我们下一次课,因为现在呢,外面这个用的少,它是新特特,新特性,可以这么讲,暂时面试不会考到,节约大家的时间,如果有兴趣想听这个的时候,那么请大家呢,选择杨哥的另外一门新课JAVA8,那个时候我详细讲过,在这儿了解,也就也就是说Java的线程池二。你自己知道。大概有五种现状,以JAVA8GDK为例。
05:00
但是你答的时候打几张。三场。看什么颜色?红色老规矩都知道,只要我标红色的必考重点。也记Java里面的第四种获得和使用多线程的方法,那就通过线程池,OK。来。二话不说直接上代码。那么听好。刚才我们讲过。是不是这货,但一般这货有点类似于collection接口,我们都不用它,我们会用什么这个类,不不这个接口的子接口,那么这个时候请看。干嘛呢?我们呢,直接。Lawyer。大家请看跟它有关系的是不是这么多啊,我点它这个接口有没有G乘以这个接口,注意。接口不是类听懂了吧,你就把它理解为这个就是collection接口,这个就是我们的list接口,能理解好,它是一种迟化对象的接接口,那么呢,它。
06:09
线程池啊,注意是不是尿不是啊。昨天我们讲过了六是不是要申请禁用示范垃圾回收机的负担加重,那么好,由于他已经给你写好迟化,就有点类似于同学们,我们做项目时候讲过一个东西。阿里巴巴的德鲁伊数据库连接池啊,有哪个同学是自己去手写一个连接池的,他直接用啊,那么所以说干嘛呢,在这块请看由这个。干嘛?请看。后面带屁股后面带S的。工具类。一般。有常见常用的就这。三个请看。New fixed to什么意思啊?故在线程池里面。固定线程数的。池子听到。
07:01
Single time single什么意思啊?单的。这个呢?可扩容带缓冲缓存的。简单一句话。一尺。固定线程。第二种,一池胰腺产。第三,找一尺多线程能跟上。好兄弟们。我们就先从。最简单的这个这个这个逐步来加深。好,那么首先也就是说这个,也就是我们的什么第。四种。获得以及使用Java多线程的。方式。那就是什么通过我们的线程池?OK。重复啰嗦一遍。共计四种。第一个继承词的类线程类,第二个实现runable接口,但runable接口没有返回值,不抛异常,第三种刚刚讲的复习实现可接口有返回值会抛异常。
08:09
那么re接口是run方法,回接口是扩方法,第四种获得和使用Java多线程的方法,通过线程池有点类似于数据库的连接,你要么写个GDBC直连,要写个JDBC直连,要不然你是不是也可以通过磁化技术获得。好,那么弟兄们抬高。这个时候干嘛呢?一尺固定速线程。尿fix的PO5个。那么这个时候呢,干嘛呢,看好。这个的意思就是一池。五个。处理现场。什么叫一尺五个处理线程?兄弟们,Fixed的这个是不是固定装修敲钉子的那个英语单词的意思啊?我们开头。
09:01
什么叫一尺五线程?假设现在我们在昌平附近有个网点叫回龙观。没问题吧,假设这个叫中国建设银行回龙观支行。这一尺就是这个银行听懂。一进去银行要办理业务,他这个银行物理上只有五个受理窗口,这个就是一个银行有五个受理窗口,对应着我们这儿就是一尺五个处理线程,什么叫处理线程?就是银行的工作人员那五个窗口听不听得懂。好,那么接下来。开打。咋用啊?二话不说,用实话,技术听好。永远。使用。关闭。关闭比使用更重要。那么言下之意什么意思啊?怎么了?只要是池子,一般错不了。Try catch finally。
10:01
那么干嘛呢?我们现在模拟什么东东呢?比如说。十个。用户来办理业务。每个。用户就是一个来自外部的。请求。县城。好兄弟们,这一步。能跟上。我们这儿来了十个人,我们一起去回龙观建设银行支行去干,你跟我讲。几个处理现场。一尺五线铲,也就是说几个窗卡?五个没问题吧?那么言下之意怎么用呢?Thread pool里面它分成两种方法。第一种这个。没问题吧,好,第二种。没问题吧?请看萨什么概念?
11:05
是不是刚才我们讲的第一种叫有返回值的。第一种叫接口没有返回值的,第二种是不是叫带返回值的C接口。凡是做并发系统必然有吃啊。现在。我们模拟十个用户来办理业务,对不对,那么好。我这大家请看。刚才。我们讲过是不是说过这两个懂不懂。那么呢?带不带?返回值认真选择好,那么呢,带返回值的刚才我们是不是已经详细讲过了,不再多废话,也就是future task1拖就O了。那比如说我们现在。用这货,注意。下蛋标配的使用关闭欧巴好,这个是吃,那么大家请看这哥们要丢个什么。
12:07
实现了runable接口的,那么老规矩函数式接口是不是又可以用我们的传说中的拉姆达?表达式啊,兄弟们,没问题吧?那么由于这个是没有返回值的,如果有返回值啊,我们这是不是就返回个,就是我亏宝,我图省事。干嘛呢?我们就选第一个,因为现在不是讲有没有反馈值的这个重点那是上一讲了,现在我们讲的是数据库连接池怎么用,它的常见使用。炎下去请看。这个是池子,相当于这就银行,这个银行里面有五个注意。工作处理线程就是那五个办理业务的窗口,银行的内部人员听到现在我这儿干嘛呢,模拟几个十个,那么言夏区这十个用户都跑到这银行是不是来执行或者叫submit提交他们各自的办理业务请求啊?他们提交的过来这十个请求,由这五个人来办,OK,那么言下之意就说,哎,我密码挂失,我跟支付宝断开,我要求信用卡申请,我要求注销用户,哎呀,反正各自业务不一样,总之一句话,十个用户来到了这一个银行,共计让这五个营业员替他们办理OK。
13:21
但是是不是一定就是十除以五等于二,每个窗口办理两个呢?不一定。为什么?这个哥们就接了一个人,这个哥们我办理八个业务,开户销户,转账申请电话银行,哎,但是另外的很清单,取取完钱是不是就走了,那所以说不一定,那么所以说这请看。咱们干嘛呢?由于我这提交十次我都好说,就一二三四五六七八九十,那么来同学们。这一块弄过来。我这个循环是不是代表这十个模拟,这十个用户同学们。
14:02
能跟上好,这十个用户的请求都由这一个线程池来处理,凭什么?因为这个线程池里面有这五个工作人员O吧,好,那么这个是我们的请求,我们过来了以后干嘛呢?我们也很简单,那么这个线程。直接过了,那么呢。干嘛呢?这个县城办理。业务好。就打出这么一句话,没有什么其他的好,那么同学们请看一下,我们现在是不是一尺五线程处理这十个请求好,那么呢,我们简单的执行一下。大家请看141323。有没有我。但是请看要要。一号窗口是不是办了三个人啊,那么好,这什么意思啊?线程池可以是吗?负右听到大家看破一。
15:03
12的12345,兄弟们绝对不可能超过五。为啥总量是不是限制啊?物理上这家银行这个网点就有五个窗口,你不可能有第六个。那么好。就算我这儿再扩一倍。20个人。最多数也就五啊。好,那么这个呢,就是我们一尺五个处理线程,同学们这一步能跟上。接下来。我们呢?改吧改吧,一尺几个一个不好意思,比如说今天是星期天,去银行上班的单职人员就比较少,周末假设哈这个店比较偏僻,银行网点人比较少,那么自然而然来的客户少,那么银行他的工作人员出的是不是也就少?一尺一线城。
16:01
来,兄弟们。看没看到single单子模式是不是叫single single就是一个的意思啊,请看几个人。还是十个没问题吧。给我听look。一尺一线城,一线铲一线铲。大家请看是不是每一个。十个请求都由一一号池子的一号线程完成,OK,今天周末,整个银行。五个窗口,但是关了四个,只开着一个。多少请求就只有我一个人办,OK,好,那么兄弟们,这是我们的什么呢?一池一线城。好。第三种情况。那么呢,不用多说。干嘛呢?几个县产不是大?看处理情况。一句话。够了。一个人搞定,比方说今天就我当时这个人,我业务能力特别牛逼,特别超强,来多少一个人摆平。
17:06
但是第二种情况没那么强,打个电话领导不好意思啊,今天我也不知道为什么周末平时没那么多人,今天来了一堆人,您看要不你安排一下张三和李四两个员工来帮帮我来让他们来加个班吧,那么这个时候兄弟们都会明白,好,那么这个时候就是一池N线程,大家看。会出来几个。是不是老多啊,我们干嘛呢,我们要看一下效果。200吧。但它有点什么英语可以充分复用,大家请看。刚才我没加时间,1111几个开始就是代表缓存可扩容的,也就说什么我这个是不是故意停这么0.2秒。
18:00
言下之意就是这个一顾得过来比较强悍,他一个人就搞定了,但是再大家再对比看这个效果。蒙了。干嘛?太快了,他回不过神,这个时候请看干嘛呢?说几个,现产十个。OK,那么他自己里面的申请和调度有他的一套机制,我们呢,回头会聊。那么好,同学们。这个就是我们。三个多线程的常见常用。别着急,这是普通的API使用,我们承上启下,再稍微讲点小东西。好,各位亲,刚才杨哥是不是让大家特意的手写了一个这个动作?这个单词没问题吧,理由。大家请看。现在杨哥将其打开。我点。一尺固定数线程,大家请看什么底层源码。
19:02
这货。好,各位亲,再来。一尺一个单线程,我点大家请看底层源码是不是还是这个。好,大家请看一池随机的扩容变动的多线程,大家请看。底层源码是不是还是这个。所以说刚才为什么让大家在键盘上写这么一个单词啊。一句话,一开口,面试官两秒钟以内让面试官听到大耳朵想听的这个人应该是看过源码,当然我们也没有骗骗面试官,我现在是不是就在带着你们看源码,对吧?OK吧,所以说这个时候呢,那么请大家彻彻底底理解好,这是第一步。第二步,请看。我把源码已经抓出来了,懒得再切换成ID干嘛呢?Look。这个固定数,创建定长的线程池。
20:03
请看。还记不记得我们有一道题目,叫线程池的五大参数意义。一二。345。第二个,能不能理解人家为什么会考你组做队列?请看link的block回答我,哦,原来线程池啊,都是这个类。什么底层这个固定数的,人家用的是什么?是不是link的阻塞队列?好,这是一个事儿。第二个事儿,安心的再看原码,兄弟们。怕。12345,诶还是五个参数,这个时候大家请看是不是还是link的block。好,能不能理解当时的时候杨哥为什么要详细重点讲这个组织队列了吧,你说你看源码好,我看了。什么这个知识你又是个漏洞,所以说先把细节做好,咱们一张碗,一把抓,一锅端,最怕就是没事看着看着,这什么意思啊,得了妈又倒回去学那个阻塞队列,这种学习效果,长时间了你根本没有信心。
21:11
所以说就是什么天下大事,必作于细,一个一个知识点的勾,那么再来兄弟们。这个。我点。一二。345,哎。同步队列是不是彻底昨天详细讲过,所以说我们会明白线程池说白了,两个要素,第一个都是这个类,第二个那阻塞队列。能理解了吧,那么昨天我们是不是重点讲过这三个?好,那么这个就是我们的初步线程池的使用和底层原理的简单介绍,那么更深层次的什么东东呢?我们下一讲再给大家继续,好,先到这儿大家休息一下。
我来说两句