在 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 这将提供您需要的灵活性?
假设在 Java 中,我有一个有界的 BlockingQueue
,我想用最多 N
个线程处理该队列中的项目。数量 N
应该是可调的。该解决方案应该从队列中取出不超过 N
个项目,这样它就可以保持其提供背压的作用。我将如何实现这一目标?
我在 http://jcip.net/listings/BoundedExecutor.java 方面取得了长足进步,但这并不允许调整大小。
也许你可以升级 class http://jcip.net/listings/BoundedExecutor.java 以提供一个可以向信号量添加更多许可的功能(你可以使用 release(int permits) 添加更多许可)并使用 CachedThreadPool 这将提供您需要的灵活性?