diff --git a/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java b/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java index 62cb5820231..a710b885c61 100644 --- a/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java +++ b/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java @@ -92,9 +92,20 @@ public ReservedThreadExecutor(Executor executor, int capacity, int minSize, int _minSize = minSize < 0 ? Math.min(1, _threads.capacity()) : minSize; if (_minSize > _threads.capacity()) throw new IllegalArgumentException("minSize larger than capacity"); - _maxPending = maxPending; - if (_maxPending == 0) - throw new IllegalArgumentException("maxPending cannot be 0"); + + if (maxPending < 0) + { + _maxPending = -1; + } + else if (maxPending == 0) + { + _maxPending = reservedThreads(executor, capacity); + } + else + { + _maxPending = maxPending; + } + if (LOG.isDebugEnabled()) LOG.debug("{}", this); installBean(_executor);