Skip to content

Petrovich-A/EPAM-Task-Xml-Multithreading

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

README.md# Task multithreading

TASK MULTITHREADING

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

Требования:

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

Индивидуальные задания

  1. Порт. Корабли заходят в порт для разгрузки и/или загрузки контейнеров и швартуются к причалам. У каждого причала может стоять только один корабль. Контейнеры перегружаются с корабля на склад порта и\или со склада на корабль. Число контейнеров не может превышать емкость склада или корабля. Каждый корабль обязательно должен быть обслужен.
  2. Речной паром. Перевозит легковые и грузовые автомобили на другой берег. Площадь платформы и ее грузоподъемность ограничена. Если паром заполнен, то оставшиеся автомобили выстраиваются в очередь.
  3. Логистическая база. Автофургоны заезжают на территорию базу для разгрузки или загрузки товаров, которые производятся через терминалы. Если территория заполнена, то фургоны выстраиваются в очередь вне базы Автофургон может только разгружаться или загружаться. Фургоны со скоропортящимся товаром обслуживаются вне очереди. Каждый фургон обязательно должен быть обслужен.
  4. Кальянная. Доступны несколько кальянов. Несколько посетителей (группа друзей) могут использовать один кальян. Кальян может использоваться одним посетителем. Группы друзей и одиночные посетители кому кальян не достался ожидают в очереди внутри помещения, а при недостатке мест, вне его.
  5. Маршрут. Автобусный маршрут состоит из последовательности различных остановок. На одной остановке может останавливаться несколько автобусов одновременно, но не более заданного числа. Если автобусы стоят на остановке пассажиры могут пересесть из одного автобуса в другой или остаться на остановке. Автобусы могут ездить каждый по своему маршруту.
  6. McDonalds. В ресторане быстрого обслуживания есть несколько касс. Посетители становятся в очередь в конкретную кассу. Посетитель может сделать предварительный заказ и получить его на стоке выдачи уже без очереди.
  7. Тоннель. В горах через два железнодорожных тоннеля в обоих направлениях могут проезжать поезда. Поезда к тоннелям подъезжают в любое время. Время следования поездов по тоннелю одинаково для всех типов поездов, в туннеле одновременно могут следовать несколько поездов, но не более определенного числа. Если в тоннеле уже движется поезд и к тоннелю подъезжают другие поезда, то предпочтение следует отдать поезду, движущемуся в том же направлении, что и поезд, который уже движется в туннеле, однако подряд в одном направлении по тоннелю могут проехать не более чем определенное количество поездов.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages