Я пытаюсь написать небольшую программу для решения следующих проблем, используя многопоточность в java. Я изо всех сил пытаюсь понять, с чего начать, и я ищу несколько советов. Необходимые этапы процесса следующие:
Я написал функцию 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