使用ConcurrentLinkedQueue时,如何限制队列的大小。是否有可能通过外部存储异常?
答案 0 :(得分:5)
ConcurrentLinkedQueue
的大小是无限制的,所以如果生产者投入物品的速度快于消费者可以移除的物品,那么它最终会耗尽你的记忆力。如果要限制队列的大小,请尝试使用阻止队列,例如LinkedBlockingQueue
或ArrayBlockingQueue
。第一个的大小可以选择性地限制,而第二个的大小总是有界的。
答案 1 :(得分:0)
我在这个问题上有点晚了,但是你总是可以设置一个上限,当你超出时,你的方法将使用一个标记来为下一个标记腾出空间,依此类推。