我刚刚开始了解如何使用BlockingQueue(数组或链接),我想知道排队如何影响资源(CPU,内存等)?
完整队列的大小开始是服务器的问题(不是线程数,而是比例更多)?
答案 0 :(得分:1)
BlockingQueue的目的是将生产者与消费者分离。这通常在消费者速度有限时选择(通常由于CPU,I / O吞吐量或仅减少生产者延迟)。
使用队列交易提高了生产者的速度,用于内存和放大器。维护队列所需的开销。
队列所需的内存通常接近ItemCount * ItemSize(加上一些开销)。 BlockingQueue实现确实提供容量限制以防止无限增长;但是,如果达到容量,通常可能会严重限制生产者。
队列不平衡的主要因素是可以生产物品的峰值速率。物品消耗的稳定速率和峰值的体积(物品数量)。计算这些将为您提供时间和#项目中预期积压的大小。
使用现代计算机,可用内存和可实现的队列大小非常大。但是,大量积压或大量未提交的业务数据可能是非常不受欢迎的。
通常,在下列情况下应仔细检查排队解决方案:
所有费率&尺寸因素取决于您的具体应用。然而,这些是一些一般原则,应该有助于分析和了解排队解决方案。