Я пытаюсь создать постоянную очередь размера в java, я хочу хранить максимум 10 объектов в очереди. Однако очередь продолжает хранить/добавлять объекты и игнорирует условие if
.Как получить фиксированную размерную очередь
мой код:
Queue<Customer> sitt = new LinkedList<Customer>();
if(sitt.size() < 10) {
System.out.println("Added");
((LinkedList<Customer>)sitt).offer(cust);
}else {
System.out.println("No space..");
}
У меня есть еще один класс Runnable, и я бегу 22 темы. Это условие должно только добавить 0-9
объектов класса Customer. Однако, sitt.size()
даже превышают 20. Может ли кто-нибудь сказать мне, в чем проблема? что даже условие if
игнорируется.
P.S: Причина, по которой я использую Queue здесь, потому что мне нужен FIFO.
Почему вы используете LinkedList? простой циркулярный буфер тоже будет работать – Domso
http://stackoverflow.com/questions/9580457/fifo-class-in-java – Stefan
Поскольку вы работаете в многопоточном сценарии, вы должны поместить условие if и добавить в синхронизированный блок. Возможно, другие потоки проверяют размер очереди до того, как другие потоки добавят свои элементы. – Karura91