Чтение многопоточного файла Java + Работа + запись

Я пытаюсь написать небольшую программу для решения следующих проблем, используя многопоточность в java. Я изо всех сил пытаюсь понять, с чего начать, и я ищу несколько советов. Необходимые этапы процесса следующие:

  1. Читайте во всех текстовых файлах, содержащихся в данном каталоге
  2. Создайте количество слов для каждого из прочитанных файлов.
  3. Напишите количество слов в виде вывода в новый файл в другом каталоге.

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

Всего 2 ответа


Можете ли вы поделиться однопоточной версией? Концептуально это может быть так просто, как это (псевдо-Java-код). countWords и writeOutput - ваши методы и файлы - это список файлов, которые вы уже читали.

files.parallelStream()
    .map(file -> new Pair(file, countWords(file)))
    .forEach((file, count) -> writeOutput(file, count));

Мне нравится ваш энтузиазм в изучении многопоточного программирования!
Помимо параллельной задачи между файлами, вы также можете параллельно и оптимизировать фактическую задачу countWords.

Это классический пример использования Fork / Join. Довольно продвинутый уровень многопоточного программирования, но очень приятный :)

вы можете искать в Интернете примеры, подобные вашим собственным, вот один из них: https://www.baeldung.com/java-fork-join


Есть идеи?

10000