如ObjectPool.borrowObject()文档中所述,耗尽时的行为取决于实现。
当池已用完时此方法的行为没有严格指定(尽管它可能由实现指定)。
GenericObjectPool
如果为真,CommonsPool2 提供的实现将阻塞,否则getBlockWhenExhausted()
立即抛出异常NoSuchElementException
。(如GenericObjectPoolborrowObject(long borrowMaxWaitMillis)中所述)
如果池耗尽(没有可用的空闲实例并且没有创建新实例的能力),则此方法将阻塞(如果 BaseGenericObjectPool.getBlockWhenExhausted() 为真)或抛出 NoSuchElementException(如果 BaseGenericObjectPool.getBlockWhenExhausted() 为假)。当 BaseGenericObjectPool.getBlockWhenExhausted() 为 true 时,此方法将阻塞的时间长度由传递给 borrowMaxWaitMillis 参数的值确定。
与“WHEN_EXHAUSTED_GROW”类似的行为不可用,并且很可能通过将 maxTotal 设置为来达到,-1
因此池根本不会耗尽。