Предотвращение ConcurrentLinkedQueue <T>из исключения из памяти - PullRequest
7 голосов
/ 26 октября 2010

При работе с ConcurrentLinkedQueue, как я могу ограничить размер очереди.Возможно ли, что это произойдет из-за исключения из памяти?

Ответы [ 2 ]

5 голосов
/ 26 октября 2010

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

0 голосов
/ 10 июля 2013

Я немного опоздал с этим, но вы всегда можете установить верхнюю границу, и при превышении ваш метод будет использовать один токен, чтобы освободить место для следующего и т. Д.

...