第五篇,对象池的设计与实现
前面每爬取一个任务都对应一个Job任务,试想一下,当我们爬取网页越来越多,速度越来越快时,就会出现频繁的Job对象的创建和销毁,因此本片将考虑如何实现对象的复用,减少频繁的gc
设计
我们的目标是设计一个对象池,用于创建Job任务,基本要求是满足下面几点:
- 可以配置对象池的容量大小
- 通过对象池获取对象时,遵循一下规则:
- 对象池中有对象时,总对象池中获取
- 对象池中没有可用对象时,新创建对象返回(也可以采用阻塞,直到有可用对象,我们这里采用直接创建新对象方式)
- 对象用完后扔回对象池