gpt4 book ai didi

java - 有界队列与 ScheduledThreadPoolExecutor 的最佳方式是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:20 29 4
gpt4 key购买 nike

Sun Java (1.6) ScheduledThreadPoolExecutorThreadPoolExecutor 的扩展,内部使用 DelayQueue 的实现,它是 无界的排队。我需要的是一个带有有界队列ScheduledThreadpoolExecutor,即它对队列中累积的任务有限制,所以当队列中的任务超过限制时,它开始拒绝进一步提交任务并防止 JVM 内存不足。

令人惊讶的是,google 或 stackoverflow 没有指出任何讨论这个问题的结果。有没有我错过的这样的东西?如果没有,我如何实现 ScheduledThreadpoolExecutor 以最佳方式为我提供预期的功能?

最佳答案

正如其他人已经指出的那样,目前还没有现成的方法可以做到这一点。只要确保您尝试使用“组合”而不是“继承”即可。创建一个实现必要接口(interface)的新类,并通过根据必要方法的要求进行检查来委托(delegate)给底层 ScheduledThreadPoolExecutor

您还可以使用 this thread 中指定的技术通过简单的修改。您可以使用 Semaphore#tryAcquire 而不是使用 Semaphore#acquire 并根据 boolean 结果决定是否需要调用拒绝处理程序。仔细想想,我个人认为库作者直接对特定执行器进行子类化而不是依靠组合在普通执行器上创建“可调度”包装器是一种疏忽。

关于java - 有界队列与 ScheduledThreadPoolExecutor 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403764/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com