Skip to content

ZacParize/cft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Справочное руководство по использованию приложения.

Приложение спроектировано с использованием паттерна произоводитель - потребитель, при соблюдении принципов SOLID, DRY, KISS и YAGNI. Основные элементы архитектуры приложения:

  1. Сущность информация (сообщение) - то, что передается и обрабатывается. По условию задания:
    • должна быть возможность задать/получить идентификатор группы;
    • должна быть возможность задать/получить идентификатор сообщения;
    • должна быть возможность задать/получить содержимое сообщения;
    • должен быть метод, который выводит информацию о сообщении.
  2. Очередь - то, что хранит информацию. Интерфейс для работы с очередью:
    • получение очередного элемента в группе (по условию);
    • проверка пустая ли очередь в заданной группе;
    • поместить элемент в очереди.
  3. Поток, который что-то выполняет. У каждого потока есть имя, каждый поток работает с определенными идентификаторами групп (по заданию: "...Элементы разных групп могут обрабатываться параллельно...Максимальное количество потоков ограничено, задается при старте обработчика и в общем случае меньше числа групп. Обеспечить равномерную обработку групп элементов: наличие в очереди групп с большим количеством элементов не должно приводить к длительным задержкам в обработке других групп..."). То есть вариант, при котором мы просто получаем последовантельно элементы из очереди на обработку не подойдет (элементы могут быть помещены неравномерно в очередь, например в LinkedBlockingQueue) и нам надо знать список групп, с которыми мы работаем. Каждый поток можно запустить, остановить, получить идентификаторы групп, с которыми работает поток, и задать имя потока.

Приложение написано с использованием принципов DRY - ни один класс не дублирует обязанности другого.

Приложение написано с использованием принципов KISS - реализации соответствующих методов классов просты и малы с точки зрения объемов кода.

Приложение написано с использованием принципов YAGNI - ни в одном классе нет избыточного функционала (кроме вставок сна потоков, что сделано для более наглядной демонстрации).

Приложение реализовано с помощью java util concurrent.

About

Some JUC's appliing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages