00:00
那各位同学。了解了上面用哪一个以后,我们都明白。自己动手,丰衣足食,那么呢,你在工作中是如何使用线程池的?是否自定义过线程池?你看看大厂们的面试题。题字很简单。你要说没有,或者我用的具体的是GDK自带的哪一个,分分钟就已经知道你的底了。这边过来吧。那么呢?杨哥呢,就带着大家。改一下。我们呢,尝试着自己来。写写这个动作,那么呢,你别着急。这边呢,我带着大家一点点弄好。这些是我们基础的这些线程池啊,我们呢。哎,不多说了,干脆把它提出来吧。
01:09
好,那么来。这个是我们JDK版的,没问题吧,那么接下来我们来来试试,尝试着手写一个。还这货。那么OK了,那么怎么写呢?你没学过现成词啊,那咋办呢?那根据刚才我们阿里巴巴的手册,还要通过这个类来实现,没错吧,而且刚才我们看了这三个的底层源码,是不是都跟这个类有关系?那么呢,干嘛道毛化火那么呢,杨哥呢,也没什么本事。那也就只能带着大家呢改改底层的源码。我过了。尿。这个类没问题了吧。可问题是。这就麻烦了。对对,参数你用咋咋个写哈。
02:02
你又怎么知道哪些是合理参数呢?好。为了保证大家学到真东西。就找朝最难那个答,我们就写七个参数。就选他。那么干嘛呢?七个我们讲过了,那第一个是不是核心数啊。好,为了给同学们好复习,好方便。我就写这个图了。我核心数现在默认就是两个代表今天单值的窗口,两个OK。好,那么同学们。两个。那么来吧。好,他提醒我了。核心数写好了两个,接下来的这个数是不是最大数啊,刚才我们也看了这货了。最大数是包含核心数的,没问题吧?总告。几个?12345没问题吧,也就是说max就等于括加另外的加other,听懂好,那么这个时候同学们,我们来五。
03:02
好了。你们干嘛呢?第三个参数是不是我们的浪形的生存时间,我不废话。一秒钟,那么呢,Time用我设了我们的。时间单位是秒钟,一秒钟,如果空闲了就缩收缩,OK,那么好,下面。说那么言下之夜,这货是个接口,我们讲过了,我们不会写,我们不会写,我们照着写,那底层源码你看干嘛呢用的。是不是这么一个动作?好,我也要那么。没关系,我照着原码改的,大家肯定放心吧,对吧,不用担心同学们。过来。你又出来这么一个好出现。细节。我们讲过了link的block。我是不是可以不付出值啊?但是底层源码一看,凶悍板,那不付出值是不是最大的,这个21亿这个,那么现在我们可以看一眼,结合我们上面的话,我们的后客区就是阻塞队列几把椅子啊,三个,那么所以说呢,哥们我呢也不给你废话,直接在这就写个三,同学们这一步能跟上。
04:18
那么请看你如果负了值,你看它是不是调用另外一个底层的源码了,好,那么就是三把椅子,这个就是后客区。那么接下来。来吧。这块再看我们写什么呢,这个时候是不是要写。这个参数现成工厂类。也就是说你的线程一般怎么出来的,就是我说的中国建设银行外面那个logo你不用管,都用默认的,那咋用默认的呀。那么这个时候同学们写法干嘛呢?Extras,第二,Default thread factory,用这个就行,这一步同学们能跟上好,那么这个动作呢,干嘛呢?我们呢?
05:03
没什么神奇的。杨哥是不是也是照着原码写的,哪来的,就是照着这这个源码写的好,那么接下来我们再来。最后一个参数第七个什么。是不是就是组那个饱和以后的拒绝策略,那么这个时候呢,干嘛呢,它的组织架构,那么就是尿。是吗?Th pros自动提示默认用的是它听懂OK,那么好,那么这货就是我们的是吗?全部改造版本。完了以后这些些。我们呢?直接拿下来。好,那么这边请同学们。这样是不是好看一点儿?
06:00
好,兄弟们,没问题了吧?1234567OK线程17大参数。来吧,那你写这线程时顶不顶事,管不管用?那么来吧。我们呢,抖一头的看一眼。那么现在。我们来看看核心素是不是两个。那么最大数是五个。左侧队列后客区是三个,那么接下来就要问一个问题了。最多几个人来办业务。线程池汇报。别忘喽,我现在。可是a about,那不废话,我们先验证一下自己的线程池对不对?那不管怎么说吧。五个肯定不没问题,对不对,最大数就大不了,我就打到最大数嘛,五个窗口全开,那么好同学们。我们呢,直接。我执行。大家看一尺12121,你懂的,是办完了。
07:03
好,为什么他不用溜到第五个能理解了吧,太快了,一可以折手回来再继续处理后面的业务,明白。好,那么下面。请大家猜一下。最高。几个客户来办理业务,我就报了。Lawyer。同学呢,大部分同学说八那么好,我们看看八个会不会报。比如说现在这个银行网点最多多少人?没报吧?没报就对了。继续压。九。老。什么什么意思啊。最大线程所说穿了。就是什么max加阻塞队列数。
08:00
为什么呢?你想吧,Marks是不是包含括?12345678。按照刚才咱们写的K是不是顶值就是八呀。那么你来第九个干嘛?瞬间就给你报异常,那么这个时候同学们,我们反杀回来。好。那么同学们,我们。打开刚才这个。拒绝阻塞策略。拒绝。策略。默认是这个直接抛出这个异常,阻止系统正常运行。主人,你给我的配置是五加三等于八,现在你干出来第九个,兄弟们,请看是不是马上报这么个异常正确吧?
09:02
好,刚才读不懂的拒绝策略第一种。直观的感受有了吧?上线是八,你敢超出八,马上跟你发脾气,对吗?那么如果你现城池都崩了,谁敢用你?这个是默认拒绝策略,你生产上你敢用吗?我一言不合就报异常。好。过来。Hall。Policy第二种俗称调用者运行机制,那什么鬼?过来看。同学们。什么意思啊?好,首先啊,刚才是不是到第九就爆了。我不减,反正。我们刚才讲了报异常是不好,虽然说它也是一种解决方案。那么我们的问题是。请思考。我不减反增,从九加到12。
10:01
你们认为会不会报复?Policy。好,刚才反应很敏感。超过八马上报。那么现在。换了一种策略run policy,那么大家看看它会打出来什么东东呢?会不会爆呢?首先,兄弟们。几个请求。一二三四五六七八九十诶。也就是说我八个,也就是说我什么最多的工作线程是不是五个。我干了八个业务,哦,不干了几个九个。居然出是个妹。啥意思啊?再读这句话。调用者。运行机制啊。该策略不会抛,不会抛遗产,而是将某些任务回退到什么者。调用者言下之意说,谁让你调我的妹线程,让你调我的,那你就去找妹线程。
11:03
有点类似于你现在银行网点人太多了,跟他说这位顾客你怎么知道我们网店的?哦,是我们那个西直门营业厅让我过来这边办的,那抱歉,您看我们这儿也快满了,要不谁让你过来的,你就找他叫回退调用者,听懂了吗?谁调我,我回退给谁?OK,那么同学们再来看。它的效果不一定哦。发现什么情况?是不是有两个妹啊?因为线程池的处理任务数调度不一样。现在我五个营业窗口来了十个。抱歉。我们的策略扛不住,那么这个时候干什么呢?超过了我的干嘛,最高上限是八,对不对,那么这个时候干嘛多出来这两个,第一种能办的我们给你办,不能办的退退,第二个不好意思,刚好只办了八个,另外多出来了两个都要被回退,听懂了吗?
12:05
好,那么就是什么poor run police,就是谁让你来找我的。你就去找谁,没现成。启动了这个线程池啊,递交任务,那么就请你回去,没线程什么概念,我受不了了,我回退听懂好。第三种情况。干嘛呢?抛弃队列中等待最久的任务,把当前任务加入队列中尝试干嘛?再次提交,那么OK。等待时间最久的那个。那么请大家看干嘛?Discard oldest policy。注意刚才我们的那个阔没报异常吧?第一种about是报异常的,它是比较粗暴爆异常,不报异常,你看你这个策略一调整,性能是不一样的。我们到了。12345678那两个没了,听懂,好,那么这个时候我们再来。
13:01
12345678,好,这是什么?Old,那么跟刚才那个差不多,这个呢,允许重新入过了,但这个呢,Discard policy。没有哦的意思了啊。干嘛?直接丢八。12345678没问题吧,为啥五加上三九十八,同学们OK,所以说这四种策略还我刚刚说那句话。你一定要把你看过的书用小case,先积小胜为大胜,一步步踏踏实实你看书没用,否则你看完以后,你觉得你懂了,狗屁你你懂你差得远呢。那么这个时候干嘛一定要像这样亲自手写出来?一句话,Show me your code。好,那么呢,这个就是我们。多线池线程池当中的是吗?详细的手写线程池和拒绝策略的进一步讲解,好,那么同学们,我们下课休息一下。
我来说两句