前言
只是趣谈一下线程池,目的是打开一个思路和想法,细节不追究,没有学过代码的,也可以当玩具哈。
多线程
多线程是目前常用技术,解决高并发问题,所谓高并发,就是同一个时间有多个任务要执行,比如,我一下想发上千封邮件,我们不可能一个一个发嘛,一个一个发就像是中午下课了,学生都排队去打饭,但是只有一个阿姨在打饭,这样就只能等前面的学生打完了,才能轮到你咯。那如果用所谓多线程呢,就是同时有几个掂菜技艺相近的阿姨给你打菜,自然要快很多。
线程池
说多线程,离不开线程池,池化思想很多地方都会用到。线程池是实现多线程的工具,我们只用把想做的事丢到池子里,它就能帮我们执行,可以用一个例子说明。我们上银行去办理业务,有3个固定柜台和1个机动柜台,大厅里还有10个座椅,这就可以当成一个大池子,4个柜台就是创建好的线程,用来执行任务,座椅是让那些任务排队的。
线程池的处理逻辑就是一堆人办理业务:银行开门了,张三来办业务,发现固定柜台有位置,那么就让他办业务。李四也来办业务,发现3个固定柜台没位置了,就让他先去10个座椅歇着。王五也来办业务,固定位置和座椅都没位置,大堂经理就安排1个机动柜台给他。这时赵六也来凑热闹,3固定柜台、1机动柜台,10座椅都满了,那么大堂经理就会把他丢出去。
这里还有细节,留给有兴趣的自己想想哈。