我正在实施生产者/消费者模式并使用LinkedTransferQueue集合。如何限制LinkedTransferQueue的大小?
我不希望我的制作者超出某些内存限制。
目前我正在使用此检查,但从documentation开始,大小操作需要O(N)遍历。对于我目前的实现中,它是好的,
但没有任何比一个更好的办法,我目前使用 ?
LinkedTransferQueue<String> producerStringLinkedTransferQueue = new LinkedTransferQueue<String>();
if (producerStringLinkedTransferQueue.size() <= 5000) {
producerStringLinkedTransferQueue.add(<some data>);
}
这当然不是这样做的。 [“确定当前元素数量...如果在遍历过程中修改了此集合,则可能会报告不准确的结果。”](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ LinkedTransferQueue.html) – Michael
同意:),因为我不必对尺寸验证非常严格,我使用这种方法,但不应该使用它,如果尺寸验证非常严格 –