Существует ли шаблон для этой системы очередей и пример кода Java? - PullRequest
1 голос
/ 08 октября 2009

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

У меня есть служба, которая ставит в очередь запросы и обрабатывает их по одному. У меня есть ряд клиентских потоков, которые делают запросы. Ключ заключается в том, что вызывающие потоки должны блокироваться до тех пор, пока их собственный конкретный запрос не будет обслужен.

например. если имеется 10 потоков, каждый из которых выполняет запрос, то 10-й поток будет блокироваться дольше всего, пока он ожидает, пока его запрос не поступит в начало очереди и не будет обработан. Вкратце, псевдокод, вызов будет таким простым:

service.processMessage(myMessage); /* block whilst it enqueues, waits, */
                                   /* processes and returns */

Я знаю, о чем ты думаешь - зачем вообще нужны темы? Скажем так, есть ограничения дизайна, которые находятся вне моего контроля.

Кроме того, это должно выполняться на JavaME, что означает приводящее в бешенство подмножество реальной Java , и никаких шикарных внешних библиотек.

1 Ответ

3 голосов
/ 08 октября 2009

Если у вас нет требований к общему порядку обработки запросов (т. Е. Вы не возражаете против произвольного смешивания запросов из разных потоков независимо от порядка, в котором они «поступают»), вы можете просто сделать processMessage () synchronized, наверное.

...