
大家好,又见面了,我是你们的朋友全栈君。
在灯光的照耀下,餐厅的餐盘显得格外晶莹洁白,女朋友轻轻抿了一口红酒,问我说:“你经常提到线程池,线程池的原理到底是什么?”我愣了一下,心想女朋友今天怎么突然问这么专业的问题,但作为一个专业人士,我不能在她面前露怯啊。于是,我笑着说:“我给你讲讲我前同事老王的故事吧!”
老王是一位在北京打拼了十多年的程序员,由于年纪大了,加班不如年轻人,升迁无望,于是他带着积蓄回老家创业。他选择了洗浴行业,开了一家正规的洗浴中心。因为他之前常去的澡堂叫“清华池”,所以他给自己的洗浴中心取名“线程池”。
线程池洗浴中心开业后,老王发现有顾客想做足疗,于是招聘了一名足疗技师,增加了这项业务,增加了收入。随着做足疗的顾客增多,老王又招聘了四名足疗技师。但后来,老王发现店里已经有五名足疗技师,再招聘就支付不起更多的工资了。足疗技师忙不过来怎么办?老王想到了一个办法:让顾客排队,哪个足疗技师空闲了,就从队伍里叫一个顾客继续做。
周末一到,来洗浴中心的顾客比平时多了几倍,想做足疗的顾客排队时间过长,顾客们已经不耐烦了。老王马上做出反应,从其他洗浴中心紧急招聘了五名足疗技师,为队伍里的顾客做足疗,大大减少了排队时间。不过,有时生意太火爆,紧急招聘的技师也忙不过来,顾客排队时间还是很长,新的顾客来了,老王只能满脸赔笑地说:“您下次再来吧,下次给您找个好技师。”,把顾客拒之门外。周末过后,店里不能养闲人,老王就把紧急招聘的技师都辞退了。
“”;
老王的生意越做越红火,很快就要开分店、融资上市、走上人生巅峰。既然这么成功,就让我们来复盘一下他的经营之道吧:
如果你了解了老王的经营之道,线程池就不难理解了,把
顾客
替换成任务
,把足疗技师
替换成线程
,线程池洗浴中心
就是线程池
了,线程池的内部原理就是这样的:
梦醒铃铃铃,闹铃把我吵醒,原来是一场梦啊,我哪有什么女朋友?今天上午有一个面试,赶紧起床洗漱完毕,就出发了。在路上回想那个奇怪的梦,不妨再复习一下线程池的内部原理吧! 先看一下ThreadPoolExecutor类的execute方法:
代码语言:script代码运行次数:0 运行 复制“`javascript public void execute(Runnable command) { if (command == null) throw new NullPointerException(); //获取clt,clt记录着线程池状态和运行线程数。 int c = ctl.get(); //运行线程数小于核心线程数时,创建线程放入线程池中,并且运行当前任务。 if (workerCountOf(c)
面试时,一个穿着格子衬衫的中年男子坐在我面前,对我说:“您好,我是今天的面试官。”我微笑地回应:“您好。”面试官面无表情地问我:“线程池一定用过吧,能说说线程池的内部原理吗?”我差点笑出声来,自信满满地说……
发布者:全栈程序员栈长,转载请注明出处:
以上就是给女朋友讲 : Java线程池的内部原理的详细内容,更多请关注php中文网其它相关文章!