Завдання: Виконавці
Завдання
Уявіть, що у вас є список файлів, кожен з яких містить рядки тексту. Ваше завдання — зчитувати рядки з цих файлів паралельно та підраховувати кількість слів у кожному рядку. Для виконання завдання використовуйте ExecutorService, Future та пул потоків.
Вимоги:
-
Створення пулу потоків: Створити пул потоків фіксованого розміру за допомогою
Executors.newFixedThreadPool(int nThreads), деnThreads— кількість потоків у пулі; -
Реалізація завдання: Реалізувати клас
WordCountTask, який імплементує інтерфейсCallable<String>і приймає файл як вхідний параметр. У методі call цього класу зчитувати рядки з файлу, підраховувати кількість слів у кожному рядку та повертати результат; -
Використання
ExecutorService: За допомогоюExecutorServiceнадсилати завдання до пулу потоків для виконання. Завдання мають використовувати класWordCountTask.
Також рядок, який ви формуєте в окремому потоці, необхідно повернути та використати метод get() інтерфейсу Future, щоб отримати результат виконання потоку та вивести його у консоль у методі main.
Зчитування з файлу
Для реалізації call() можна використовувати BufferedReader для зчитування рядків з файлів. Використовуйте блок try-with-resources, щоб ресурси автоматично закривалися.
Main.java
1BufferedReader reader = new BufferedReader(new FileReader(file));
Використовуйте метод readLine() для зчитування кожного рядка та обов'язково перевіряйте на null, щоб визначити, коли досягнуто кінця файлу.
Далі розділіть рядок на масив рядків за допомогою методу split("\\s+") з патерном \\s+, який розділяє рядок за пробілами, а потім отримайте розмір масиву.
У самому рядку, який повертає потік, використовуйте це форматування
Main.java
1String.format("File: %s | Line: %s | Word Count %d", fileName, line, countWord)
Файли вже знаходяться у проєкті, вам не потрібно їх створювати або змінювати!
Приклад виводу
File: file1.txt | Line: Hello | Word Count: 1
File: file2.txt | Line: Hello I Love Java | Word Count: 4
File: file2.txt | Line: Lol Hello | Word Count: 2
File: file3.txt | Line: Java so so so so very nice | Word Count: 7
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.33
Завдання: Виконавці
Свайпніть щоб показати меню
Завдання
Уявіть, що у вас є список файлів, кожен з яких містить рядки тексту. Ваше завдання — зчитувати рядки з цих файлів паралельно та підраховувати кількість слів у кожному рядку. Для виконання завдання використовуйте ExecutorService, Future та пул потоків.
Вимоги:
-
Створення пулу потоків: Створити пул потоків фіксованого розміру за допомогою
Executors.newFixedThreadPool(int nThreads), деnThreads— кількість потоків у пулі; -
Реалізація завдання: Реалізувати клас
WordCountTask, який імплементує інтерфейсCallable<String>і приймає файл як вхідний параметр. У методі call цього класу зчитувати рядки з файлу, підраховувати кількість слів у кожному рядку та повертати результат; -
Використання
ExecutorService: За допомогоюExecutorServiceнадсилати завдання до пулу потоків для виконання. Завдання мають використовувати класWordCountTask.
Також рядок, який ви формуєте в окремому потоці, необхідно повернути та використати метод get() інтерфейсу Future, щоб отримати результат виконання потоку та вивести його у консоль у методі main.
Зчитування з файлу
Для реалізації call() можна використовувати BufferedReader для зчитування рядків з файлів. Використовуйте блок try-with-resources, щоб ресурси автоматично закривалися.
Main.java
1BufferedReader reader = new BufferedReader(new FileReader(file));
Використовуйте метод readLine() для зчитування кожного рядка та обов'язково перевіряйте на null, щоб визначити, коли досягнуто кінця файлу.
Далі розділіть рядок на масив рядків за допомогою методу split("\\s+") з патерном \\s+, який розділяє рядок за пробілами, а потім отримайте розмір масиву.
У самому рядку, який повертає потік, використовуйте це форматування
Main.java
1String.format("File: %s | Line: %s | Word Count %d", fileName, line, countWord)
Файли вже знаходяться у проєкті, вам не потрібно їх створювати або змінювати!
Приклад виводу
File: file1.txt | Line: Hello | Word Count: 1
File: file2.txt | Line: Hello I Love Java | Word Count: 4
File: file2.txt | Line: Lol Hello | Word Count: 2
File: file3.txt | Line: Java so so so so very nice | Word Count: 7
Дякуємо за ваш відгук!