Skip to content

Zirow0/3ASPR2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Багатопоточна обробка масиву чисел із використанням Future

Ця програма демонструє асинхронну обробку масиву чисел за допомогою потоків, ExecutorService, Callable, та Future. Масив розділяється на кілька частин, кожна з яких обробляється окремим потоком, а результати об'єднуються після виконання.


Алгоритм програми

  1. Ініціалізація:

    • Створити масив випадкових чисел у заданому діапазоні.
    • Запитати у користувача множник, на який будуть помножені всі числа.
  2. Розбиття масиву на частини:

    • Розділити масив на рівномірні частини, щоб кожен елемент оброблявся окремим потоком.
  3. Використання ExecutorService:

    • Запустити обробку частин масиву асинхронно через ExecutorService та Callable.
  4. Об'єднання результатів:

    • Використати Future для збору результатів обчислень.
  5. Виведення результату та час роботи програми.

Пояснення

  1. Ініціалізація діапазону та масиву:

    • Масив чисел від -100 до 100 генерується випадковим чином.
    • Кількість елементів у масиві випадкова, в діапазоні від 40 до 60.
  2. Множник від користувача:

    • Множник вводиться користувачем з консолі.
  3. Розбиття масиву на частини:

    • Масив розбивається на рівні частини, які оброблятимуться окремими потоками.
  4. ExecutorService для виконання завдань:

    • Кількість потоків обмежена до 4.
    • Завдання поділяються на обробку асинхронно через ExecutorService.
  5. Використання Future:

    • Future.get() збирає результати обробки.
    • Перевірки isDone() та isCancelled() забезпечують коректність виконання.
  6. CopyOnWriteArrayList:

    • Використовується для потокобезпечного зберігання результатів.
  7. Вимірювання часу:

    • Обчислюється час між моментами запуску та завершення обробки.

Основні моменти

  • Масив обробляється асинхронно.
  • Завдання обробляються паралельно через окремі потоки.
  • В кінці роботи результати збираються з усіх потоків.
  • Перевірки isDone() та isCancelled() допомагають переконатися в коректності.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages