commons.pool对象池对象获取的方式
在我的印象中,对象池是有最小对象数,最大对象数的,即当容器中的对象数目达到最大数后,请求线程等待空闲对象,此时线程应该是wait,等待return空闲对象的时候notify通知该线程去获得对象。
观察apache.commons.pool的StackObjectPool源码的borrowObject()方法:
while (null == obj) { //如果池不空,直接给你一个空闲对象。(注意:这里的对象池_pool放置的都是空闲对象) if (!_pool.empty()) { obj = _pool.pop(); } else { if(null == _factory) { throw new NoSuchElementException(); } else { //注意这里new了一个对象出来。 [color=red][b]obj = _factory.makeObject();[/b][/color] newlyCreated = true; if (obj == null) { throw new NoSuchElementException("PoolableObjectFactory.makeObject() returned null."); } } }................}