一个简单的例子让你快速了解什么是单线程、多线程和线程池

现在有很多文章对多线程和线程池都有解释,但是这些的解释仍然让初学者很是难懂。本文以一个实际的示例来进行解释,让你很快就了解三者的作用和区别。

有一家餐厅,为了提高服务,安排了前台负责接待,前台的工作就是将前来就餐的客人引导至到指定的餐桌或包厢就餐。

单线程模式
现在店里开始安排了一个前台,每当有客人来时,他会进行引导,如果有多名客人来店,就需要等待。

多线程模式
这家餐厅的服务做的不错,客人越来越多,于是一名前台已经难以满足需求,所以就安排了3名前台,这样3名前台同时工作,可以将接待效率提高3倍。

线程池
随着客人越来越多,3名前台也无法满足需求了,最忙的时候经常会有二三十人同时到店,直到老板安排了10名前台才基本能满足需求。虽然问题解决了,但是新的问题又来了,因为晚上吃饭的时候,只有在客流高峰时候,10名前台才会同时工作,而高峰期以外的时候,4个人就能满足需求。这时候,老板就进行了调整,常规的4人,根据实际忙碌的情况,从其他不太忙的岗位临时调人过去。这样前台的人数会在4-10人之间浮动。

在以上三个示例中,每个前台工作人员就是一个线程。只有一个线程(前台)时工作任务(引导客人)多了就会卡住(后来的客人要排队),多线程就是多个线程同时工作(多名前台同时引导客人)。而线程池就是一个控制线程数量的对象,它能够对线程数量能够进行动态调整,以满足实际的业务量的需求:当任务量比较大时,会增加线程以满足处理需求;当任务空闲时,会减少线程数以节省资源。

好了,解释完毕。

猜你喜欢

转载自blog.csdn.net/weixin_43145361/article/details/84587975