浏览 1408 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-19
观察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."); } } } ................ } 上面可见,commons的pool没有作线程等待处理,而是池里面的空闲对象没有了就调用你自己的factory的makeObject方法,这个方法一般都是直接new一个对象出来,可见,commons的pool对对象的个数并没有限制住,当空闲对象不够用的时候,不是等待,而是直接创建对象。当然,可能commons认为wait会堵塞线程,但实际上,我们有些时候是需要控制对象的数量的 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |