【池化】通俗理解池化技术:线程池、连接池

今天和朋友交流,聊到线程,引出了线程池概念,为了讲的通俗易解,路过一栋建筑物,就举了一个例子。

从线程池举例子,线程主要就是去获取CPU资源做自己的任务。这时候,我们把主要的内容形象化

形象成具体事物:

  • CPU:房子
  • 资源:房子内部空间
  • 任务:一个人

对应的操作:

  • 创建线程:造门(在房子上建一个门)
  • 销毁线程:拆门(在房子上把门拆除)

大概的过程是:

如果一个线程获取资源的过程可以形象成一个人要进去房子。这时候房子上没有门,那么这个人就必须自己去造门,进去房子内,当任务结束,出来后要拆掉门。

创建线程和销毁线程的开销都是比较高的,就像每次去造门和拆门都是很费力的事情。这时候引入池化技术,节省不必要的开销,即每次都不需要重新造门和拆除门。

池化技术可以理解成:

  1. 在建造房子(即系统初始化时)时先建立一定量的门;
  2. 这时候,当一个人需要进去房间内(获取资源),可以选取一个门进去;
  3. 在办完事后,从这个门再出来,这时候门又可以被其他人使用;
  4. 后来的人亦是同样的操作;
  5. 最后整个任务结束时,再统一拆除所有的门。

对应线程池过程:

  1. 先建立一个线程池,已经创建一定数量的空闲线程;
  2. 当子任务需要创建一个线程时,直接从线程池中获取空闲线程(对应选取空闲的门),执行任务;
  3. 任务完成后,将线程归还到线程池中,重归空闲;
  4. 其余任务亦是如此;
  5. 最后整个任务结束后,销毁所有线程,关闭线程池。

池化技术的优势:

如果没有线程池时,随意创建线程,当达到一定量的线程时,整个主机负载过重,直接宕机;
即可理解为,无限的人都自己造门进入了房间,最后整个房间被撑爆了,都办不了事了。
这时候,用线程池时,只能让先来的任务获取到线程,完成任务后,再退出让后面的任务获取线程;即,先来的人先进入房间,后来的人在门外等待(有点像蹲坑,总得先等人出来再进去),当里面有人出来后,后来等待的人才能进入。

这样,有了限制后,保证了不会被撑爆,主机就不会宕机。

最后有个情况,就是如果等的人太多了也是一个问题。所以线程池需要对等待的任务队列也有一个限制。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值