在 java 中,如何处理最多 N 个线程且 N 可调的有界队列中的项目?

In java, how to process items off a bounded queue with at most N threads, with adjustable N?

假设在 Java 中,我有一个有界的 BlockingQueue,我想用最多 N 个线程处理该队列中的项目。数量 N 应该是可调的。该解决方案应该从队列中取出不超过 N 个项目,这样它就可以保持其提供背压的作用。我将如何实现这一目标?

我在 http://jcip.net/listings/BoundedExecutor.java 方面取得了长足进步,但这并不允许调整大小。

也许你可以升级 class http://jcip.net/listings/BoundedExecutor.java 以提供一个可以向信号量添加更多许可的功能(你可以使用 release(int permits) 添加更多许可)并使用 CachedThreadPool 这将提供您需要的灵活性?