devalurum / homework_2-multithreading-

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Домашняя работа #2

Задание

Реализовать построчное чтение файла, многопоточную обработку текста, и запись результата в файл в отдельном потоке.

Требования

  1. Чтение обрабатываемого файла выполнять построчно в основном потоке.
  2. Обработку каждой строки выполнять в отдельном потоке. Количество потоков 2 * кол-во ядер потоков.
  3. Результаты обработки записывать в файл в отдельном потоке. Формат записи строка <кол-во символов>.
  4. Запись в результирующий файл в том же порядке, что и в обрабатываемом.

Сборка приложения

# загружает gradle wrapper 6.6
./gradlew wrapper

# сборка проекта, прогон тестов
./gradlew clean build

Комментарии

  1. Допускается использовать дополнительные массивы для хранения данных не больше размера CHUNK_SIZE, т.е. хранить только текущие обрабатываемые данные.
  2. Для работы с потоками использовать пул потоков Executors.newFixedThreadPool().
  3. Для синхронизации потоков можно использовать java.util.concurrent.Phaser или java.util.concurrent.CyclicBarrier.
  4. Для передачи данных потоку записи в файл можно использовать java.util.concurrent.Exchanger.

Как сдавать?

  • Fork этого репозитория
  • Merge request вашей реализации в этот репозиторий

About


Languages

Language:Java 94.7%Language:Shell 5.3%