![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Нужен пример работы с интерфейсом java.utils.Queue
Подкиньте может кто-нибудь? В гугле по этому запросу почему-то всего одна ссылка: http://www.google.de/search?hl=de&q=ja...Suche&meta= |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Я нашел некоторую информацию тут: http://www.galileocomputing.de/openbook/ja...0008.htm#bild99 (на немецком)
Там в пример приведен следующий код:
У меня по этому код есть вопросы: 1. Что это означает? public synchronized Object dequeue() public - это тип метода dequeue - это название А остальное??? |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Хм....
Ну вообщем то это обычная очередь, причем в зависимости от реализации она может быть как FIFO, так и LIFO. Простейший пример:
Но это конечно полная банальщина, самые вкусные очереди находятся в java.util.concurrent. Добавлено @ 22:28
Object - тип возвращаемого значения synchronized - метод синхронизирован, т.е. его одновременно может вызывать только один поток. У нас в FAQ есть статья на эту тему. Но это просто пример реализации очереди (причем неудачный), но отношения в интерфейсу java.util.Queue он не имеет. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
А как можно с очередью работать через интерфейс java.utils.Queue ? Вроде в приведенном мною примере, мы просто создали отдельный класс Queue, который основан на Vektor из java.util.*; ?
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ты лучше скажи задачу, потому что реальная польза от Queue будет при использовании пакета java.util.concurrent, а это уже многопоточное программирование и совсем другая песня.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
А откуда в твоем примере взялся LinkedList ? Это какой-то стандартный класс, который очередь реализует?
|
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Надо чтобы наш класс Queue реализовывал этот интерфейс.
Да. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
У меня есть класс, который реализует человека. И вот мне надо создать 10 человек и поставить их в очередь. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Да, это один из стандартных классов которые реализуют очередь. Но вообще их много: AbstractQueue, ArrayBlockingQueue, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingQueue, LinkedList, PriorityBlockingQueue, PriorityQueue, SynchronousQueue, поэтому я ии спросил про задачу. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
||||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Если многопоточности нет, то используй LinkedList. Если есть то надо смотреть на поведение при поступлении нового объекта, что делать когда очередь пуста и т.д. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Такс.. я могу ли я вместо Vektor или же LinkedList очередь через ArrayList сделать?
Какая разница между LinkedList и ArrayList ? |
|||
|
||||
LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Правильно, но надо будет реализовать все методы в интерфейсе java.utils.Queue (а их много), и не желательно называть свои классы именами совпадающими со стандартными классами (хотя и допустимо если объект в другом пакадже). Добавлено @ 22:48
Запросто, причем даже не обязательно реализовывать очередь (java.utils.Queue). У них есть методы add() - добавить в конец списка и remove() удалить i-тый элемент. В принципе все что надо для простейшей очереди есть.
В реализации, ArrayList использует массив для хранения элементов, а LinkedList двусвязный список. Соответсвенно вставка не в конец списка и удаление не из конца списка в ArrayList долгие операции (если массив большой), а у LinkedList долгий поиски i-того элемента (но для очереди это не надо). Это сообщение отредактировал(а) LSD - 12.1.2006, 22:50 -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
||||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Конечно! В принципе можно оставить метод пустым или выбрасывать исключение UnsupportedOperationException, но не реализовать их нельзя, компилятор не будет компилировать такой класс. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
А как мне можно создать массив очередей? Т.к. очередей у меня по несколько в каждой комнате.
И эти 10 человек должны случайно распределиться по разными очередям в первой комнате. А эти очереди должны быть в массив объеденины. Далее эти люди по одному выходят из разных очередей в первой комнате и направляются во вторую комнату, а там уже другие очереди ![]() Т.е. мне надо создавать два массива очередей ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
СМО делаешь?
![]()
Хотя если ты делаешь несколько потоков обработки, и надо ставить человека в наименее загруженные очереди, а брать из самых загруженных. То тут лучше применить другой подход. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Wowa |
|
||||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
А что это такое? ![]() ![]() Ага, именно так ![]() Добавлено @ 23:35 Вот в этой строке:
Что такое <Queue>? Должно ли это Queue как-то раньше быть определено? Добавлено @ 23:38 LSD в твоем примере мы имеем 5 комнат, и в каждой по 10 очередей? |
||||
|
|||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Система массового обслуживания. Есть такая дисциплина Исследование Операций и это один из ее подразделов это системы массового обслуживания, почитать можно тут (4-ая глава).
Тут уже не все так просто, на выходных накидаю примерчик. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
||||
|
||||
LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это класс java.util.Queue, мы создаем параметризованный ArrayList. Обычный ArrayList может хранить любые объекты (за счет того, что они все приводимы к Object), а параметризованный хранит только те которые приводимы к типу параметра (в данном случае java.util.Queue), об этом немного есть у нас в FAQ.
Да. Добавлено @ 23:58
Есть некий класс процессор, у него есть указатель на входной процессор и выходной (чтобы организовывать цепочку). У него есть некоторое количество очередей ожидания (они могут иметь фиксированную длинну). И есть некоторое количесво обработчиков (равное количеству очередей), которые способны обработать объект из очереди (обработка занимает некоторое время). От входного процессора поступает объект, который кладется в наименее загруженную очередь. Как только один из обработчиков заканчивает обработку, обработанный объект передается в выходной процессор. Ну и плюс объекты от которых изначально классы поступают и куда они потом передаоются, соответсвенно начало и конец цепочки. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Таки доделал
![]() Задокументировано там не очень подробно, но я готов ответить на все вопросы ![]() В архиве исходный код и исполняемый jar. Присоединённый файл ( Кол-во скачиваний: 12 ) ![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
А числа под диаграммами - это что? Количество отклоненных запросов при превышении длины очереди?
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Да, Denial of Service. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |