当 GenericObjctPool borrowObject 无法借用 Object 时会发生什么。
例如,如果它是在任意循环中借用的,但线程池的大小仅为 2。它会在不可用时阻塞对 borrowObject 的调用还是将其入队?
当 GenericObjctPool borrowObject 无法借用 Object 时会发生什么。
例如,如果它是在任意循环中借用的,但线程池的大小仅为 2。它会在不可用时阻塞对 borrowObject 的调用还是将其入队?
直接取自javadoc:
如果池耗尽(没有可用的空闲实例并且没有创建新实例的能力),此方法将阻塞 (WHEN_EXHAUSTED_BLOCK)、抛出 NoSuchElementException (WHEN_EXHAUSTED_FAIL) 或增长(WHEN_EXHAUSTED_GROW - 忽略 maxActive)。当 whenExhaustedAction == WHEN_EXHAUSTED_BLOCK 时,此方法将阻塞的时间长度由 maxWait 属性确定。
无限期阻塞的原因 - 缺少 getPool().returnObject(MyRunnable)