Постановка завдання
Тема курсової роботи: «Кошти Java для реалізації многопоточной архітектури».
Мета роботи: Використовуючи засоби многопоточной архітектури зробити обчислення і зробити вимір швидкості виконання обчислення для різної кількості потоків. Для обчислення використовувати:
Функцію
Кількість потоків: будь;
Кількість аргументів: дві (x, y);
Створити інтерфейс введення і виведення результату;
Для реалізації даного завдання використовуємо наступний план дій:
1. Проведемо огляд засобів і методів реалізації багатопоточності в мові Java/
2. Побудуємо алгоритм програми.
. Напишемо за алгоритмом сам текст програми.
. На прикладі використання декількох потоків проаналізуємо результат.
. Запишемо висновок про виконану роботу.
Введення
Найбільш очевидна область застосування багатопоточності - це програмування інтерфейсів. Нить незамінна тоді, коли необхідно, щоб графічний інтерфейс продовжував відгукуватися на дії користувача під час виконання деякої обробки інформації. Наприклад, потік, що відповідає за інтерфейс, може чекати завершення іншого потоку, що завантажує файл з інтернету, і в цей час виводити деяку анімацію або оновлювати прогрес-бар. Крім того він може зупинити потік завантажує файл, якщо була натиснута кнопка «скасування».
Ще одна популярна і, мабуть, одна з найбільш затребуваних областей застосування багатопоточності - ігри. В іграх різні потоки можуть відповідати за роботу з мережею, анімацію, розрахунок фізики і т.п. Для повного розуміння наведемо далі основні поняття і приклади.
1. Теоретична частина (огляд засобів і методів реалізації багатопоточності в Java)
. 1 Процеси
Процес - це сукупність коду і даних, які поділяють загальне віртуальний адресний простір. Найчастіше одна програма складається з одного процесу, але бувають і винятки (наприклад, браузер Chrome створює окремий процес для кожної вкладки, що дає йому деякі переваги, начебто незалежності вкладок один від одного). Процеси ізольовані один від одного, тому прямий доступ до пам'яті чужого процесу неможливий (взаємодія між процесами здійснюється за допомогою спеціальних засобів).
Для кожного процесу ОС створює так зване «віртуальне адресний простір», до якого процес має прямий доступ. Це простір належить процесу, містить тільки його дані і знаходиться в повному його розпорядженні. Операційна система ж відповідає за те, як віртуальний простір процесу проектується на фізичну пам'ять.
Схема цієї взаємодії представлена ??на рис. 1. Операційна система оперує так званими сторінками пам'яті, які являють собою просто область певного фіксованого розміру. Якщо процесу стає недостатньо пам'яті, система виділяє йому додаткові сторінки з фізичної пам'яті. Сторінки віртуальної пам'яті можуть проектуватися на фізичну пам'ять в довільному порядку.
Рис.1
При запуску програми операційна система створює процес, завантажуючи в його адресний простір код і дані програми, а потім запускає головний потік створеного процесу.
1.2 Потоки
Один потік - це одна одиниця виконання коду. Кожен потік послідовно виконує інструкції процесу, якому він належить, паралельно з іншими потоками цього процесу.
Слід окремо обговорити фразу «паралельно з іншими потоками». Відомо, що на одне ядро ??процесора, в кожен момент часу, доводиться одна одиниця виконання. Тобто одноядерний процесор може обробляти команди тільки послідовно, по одній за раз (у спрощеному випадку). Однак запуск декількох паралельних потоків можливий і в системах з одноядерними процесорами. У цьому випадку система буде періодично перемикатися між потоками, по черзі даючи виконуватися то одному, то іншому потоку. Така схема називається псевдо-паралелізмом. Система запам'ятовує стан (контекст) кожного потоку, перед тим як переключитися на інший потік, і відновлює його по поверненню до виконання потоку.
У контекст потоку входять такі параметри, як стек, набір значень регістрів процесора, адреса виконуваної команди і т.д.
Простіше кажучи, при псевдопараллельном виконанні потоків процесор метається між виконанням декількох потоків, виконуючи по черзі частина кожного з них (рис.2).
Рис.2
Кольорові квадрати на малюнку - це інструкції процесора (зелені - інструкції головного потоку, сині - побічного). Виконання йде зліва направо. Після запуску побаченого потоку його інструкції починають виконуватися упереміш з інструкціями головного по...