An open API service indexing awesome lists of open source software.

https://github.com/zlatamigas/epam-task4

Epam. Task 4. Multithreading.
https://github.com/zlatamigas/epam-task4

callable executor-service java multithreading synchronization

Last synced: 20 days ago
JSON representation

Epam. Task 4. Multithreading.

Awesome Lists containing this project

README

          

# Task 4. Multithreading.

Разработать многопоточное приложение, использующее разделяемые ресурсы.
В приложении должна быть реализована функциональность, определенная индивидуальным заданием.

## `Требования`
* Любая сущность, желающая получить доступ к разделяемому ресурсу, должна быть потоком.
* Программа может использовать возможности синхронизации, поставляемые библиотеками java.util.concurrent, java.util.concurrent.atomic и java.util.concurrent.locks.
* Не использовать интерфейс BlockingQueue и другие ограниченно потокобезопасные коллекции.
* Классы и другие сущности приложения должны быть грамотно структурированы по пакетам и иметь отражающую их функциональность название.
* Использовать шаблон State для описания состояний объекта, если только этих состояний больше двух.
* Для создания потоков разрешается использовать по возможности Callable.
* Запускать потоки с помощью ExecutorService.
* Вместо Thread.sleep использовать только возможности перечисления TimeUnit.
* Данные инициализации объектов считывать из файла. Данные в файле корректны.
* В приложении должен присутствовать потокобезопасный Singleton. При его создании запрещено использовать enum.
* Для записи логов использовать Log4J2.
* Для вывода работы потоков использовать метод main.

## `Индивидуальное задание`

### Вариант 3. Логистическая база.

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