При работе с ConcurrentLinkedQueue, как я могу ограничить размер очереди.Возможно ли, что это произойдет из-за исключения из памяти?
Размер ConcurrentLinkedQueue не ограничен, поэтому, если производители размещают товары быстрее, чем потребители могут их извлечь, в конечном итоге это действительно съест вашу память.Если вы хотите ограничить размер очереди, попробуйте заблокировать очередь, например LinkedBlockingQueue или ArrayBlockingQueue.Размер первого может быть ограничен, а второй всегда ограничен.
ConcurrentLinkedQueue
LinkedBlockingQueue
ArrayBlockingQueue
Я немного опоздал с этим, но вы всегда можете установить верхнюю границу, и при превышении ваш метод будет использовать один токен, чтобы освободить место для следующего и т. Д.