PriorityBlockingQueue是无界的,但我需要以某种方式将其绑定(bind)。做到这一点的最佳方法是什么?

有关信息,请在PriorityBlockingQueue中使用有界的ThreadPoolExecutor

注意:如果发生这种情况,我不想抛出异常,我想将对象放入队列,然后根据其优先级值将其剪切。有什么好办法可以做到这一点吗?

最佳答案

我实际上不会继承它。尽管我现在无法将示例代码放在一起,但我建议使用装饰器模式的版本。
创建一个新类并实现您感兴趣的类PriorityBlockingQueue实现的接口(interface)。我发现该类使用了以下接口(interface):

Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
在类的构造函数中,接受PriorityBlockingQueue作为构造函数参数。
然后通过PriorityblockingQueue实例实现接口(interface)所需的所有方法。添加使它有界所需的任何代码。这是装饰器模式的相当标准的实现。

10-07 16:02