Завдання: Виконавці
Завдання
Уявіть, що у вас є список файлів, кожен з яких містить рядки тексту. Ваше завдання — зчитувати рядки з цих файлів паралельно та підраховувати кількість слів у кожному рядку. Для виконання завдання використовуйте 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
Дякуємо за ваш відгук!