Задача на параллельную работу с файлами

0
15 янв 2019 09:31
Есть вот такое задание:

В директории есть несколько файлов логов. За минимально возможное временя рассчитайте распределение появления ошибок (ERROR) для каждого часа / минуты /. Выведите результаты в файл статистики

Я понимаю, что необходимо использовать многопоточность - через пул создавать потоки для открытия и чтения файлов (1 поток - 1 файл), а дальше у меня возникли трудности с решением, не знаю,что делать ...

Вот пример пары строчек лога с ошибкой:
15:35:36,374 ERROR [ru.company.idocs_storage._stdimpl.dao.IDocsStorageApplicationImpl] (longRunTasksThreadPoll-4) Error in iDocs process
15:35:36,374 ERROR [ru.company.idocs_storage._stdimpl.dao.IDocsStorageApplicationImpl] (longRunTasksThreadPoll-4) User: Smith John

Есть идеи алгоритма решения или действий?

Ответов: 2

0
16 янв 2019 12:54
Создаешь 2 Map<Long, Long>
В первую кладешь ключи от 0 до 23, а значения AtomicLong, во вторую от 0 до 59, значения AtomicLong
Каждый обработчик должен иметь доступ к этим map
Далее для каждой строки, вычисляешь является ли она ошибочной
String isError = "ERROR".equals(str.substring(13, 18))
Если да, то увеличиваешь соответствующие значения в обеих map
Ну а в конце подводишь на их основе статистику
0
16 янв 2019 05:44
загрузи построчно, раздеребань строчки на час, минуту и тип записи и посчитай.
Модераторы: Нет
Сейчас эту тему просматривают: Нет