一、线程池解决的问题?
使用线程池主要解决在程序中频繁创建和销毁线程导致的资源浪费,线程池可以维护一定量的线程来执行所需要的任务,维护的线程也可以重复使用。
二、用形象的饭店来解释工作原理
线程池就相当于一家饭店,
任务就相当于来饭店吃饭的客人
线程就相当于饭店的厨师
队列就相当于饭店外面提供排队的板凳
三、工作原理
如图:
四、类似于餐厅的工作原理
客人前来点餐
餐厅分配正式厨师做饭
如果正式厨师不够用,就去排队
如果外面的排队小板凳用完,餐厅会招聘临时厨师做饭
如果临时厨师也用完,也没有办法排队就使用拒绝策略
放弃这个客户
让客户自己做饭吃
上报错误
丢弃让最先排队的客户,为当前客户做饭
上报错误(没有原因)
如果所有客户都有饭吃了,那么临时厨师和正式厨师就等待新客户
临时厨师等一定时间还没有客户就被辞退
正式厨师将一直等待新客户