- •Лабораторна робота №2.
- •Приклад документованого тексту програми.
- •Виклик утiлiти Javadoc з командного рядка.
- •Завдання:
- •Лабораторна робота №3.
- •Теоретичнi вiдомостi.
- •Завдання
- •Iндивiдуальнi завдання до захисту роботи
- •Теоретичнi вiдомостi.
- •Завдання
- •Лабораторна робота №4.
- •Iндивiдуальнi завдання до захисту роботи
- •Рекурсивна версiя засувки
- •Завдання
- •Iндивiдуальнi завдання до захисту роботи
- •Використання семафорiв для сигналiзацiї
- •Рахуючий семафор
- •Обмежуючий семафор
- •Потоки стандартного вводу / виводу
- •Стандартний поток виводу System.Out
- •Стандартний поток вводу System.In
- •Стандартний поток помилок System.Err
- •Потоки вводу / виводу пакету java.Io
- •Файловий ввод / вивід
- •Рядковий ввод / вивід
- •Завдання:
- •Опанувати методику створення розподiлених програм з використанням часової синхронiзацiї паральних потокiв.
- •Приклад використання класу CountDownLatch
- •Опанувати методику створення розподiлених програм з використанням часової синхронiзацiї паральних потокiв.
- •Приклад вiдстеження моменту закiнчення роботи декiлькох потокiв
- •Завдання:
- •Опанувати методику створення розподiлених програм з використанням обмiнникiв.
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Мережі і сокети
- •Приклад: віддалене читання файлу
- •Сервер читання файлів мовою Java
- •Клієнт читання файлів мовою Java
- •Порядок компіляції та запуску програм
- •Завдання:
- •Контрольні питання:
- •Iндивiдуальнi завдання до захисту роботи
- •Опанувати методику створення розподiлених програм з використанням конвейеру команд.
- •Опанувати методику побудови моделi обчислень у виглядi графа "операцiї-операнди".
- •Приклад паралельного алгоритму для обчислення площi прямокутника
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Опанувати методику створення розподiлених програм з використанням портфеля задач.
- •Приклад використання портфеля задач за допомогою ExecutorService.
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Опанувати методику створення розподiлених програм з використанням бар'єрної синхронiзацiї.
- •Приклад використання бар'ера
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Опанувати методику синхронiзацiї паральних процесiв з використанням блокуючої черги.
- •Приклад реалiзацiї блокуючої черги
- •Приклад використання блокуючої черги
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Вимоги до звiту
- •Iндивiдуальнi завдання для самостiйної роботи
- •Вимоги до звiту
- •Iндивiдуальнi завдання для самостiйної роботи
- •Вимоги до звiту
- •Iндивiдуальнi завдання для самостiйної роботи
- •Додатковi завдання для пiдвищення балiв з курсу “Паралельне програмування”
Завдання
Розглянути, вiдкомпiлювати та запустити на виконання наведений приклад.
З'ясувати принципи багатопоточної синхронiзацiї за допомогою глобальної змiнної.
З'ясувати особливостi програмування та застосування методу глобальної змiнної.
class TestThread extends Thread { String threadName; CommonVariable parentClass; TestThread( String name, CommonVariable c) { threadName = name; parentClass = c; System.out.println( threadName + " - Created"); } public void run() { System.out.println( threadName + " - Start of Work"); while (parentClass.state != true) { System.out.println( threadName + " - " + parentClass.state); try { Thread.sleep( 10); } catch (InterruptedException ie) { } } System.out.println( threadName + " - " + parentClass.state); System.out.println( threadName + " - End of Work"); } } public class CommonVariable { boolean state = false; CommonVariable() { state = false; } public static void main( String argc[]) { System.out.println( "Main process started"); CommonVariable cv = new CommonVariable(); TestThread t1 = new TestThread( "First", cv); TestThread t2 = new TestThread( "Second", cv); TestThread t3 = new TestThread( "Third", cv); t1.start(); t2.start(); t3.start(); System.out.println( "Main process: " + cv.state); try { Thread.sleep( 60); } catch (InterruptedException ie) { } cv.state = true; System.out.println( "Main process: " + cv.state); System.out.println( "Main process ended"); } } |
Iндивiдуальнi завдання до захисту роботи
Зробити так, щоб другий процес робив циклiв бiльше за усi iншi.
Зробити парну кiлькiсть процесiв. Хай кожен парний процес робить циклiв в двiчi бiльше нiж непарний.
Створити три процеси. Зробити так, щоб другий процес завжди закiнчувався останнiм. Не змiнювати часи затримки. Використати додаткову загальну змiнну.
Створити три процеси. Зробити так, щоб перший процес припиняв роботу другого, а другий третього. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити три процеси. Зробити так, щоб перший процес припиняв роботу усiх iнших процесiв. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити три процеси. Зробити так, щоб перший процес завжди припиняв роботу другим. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити три процеси. Зробити так, щоб перший процес завжди припиняв роботу пiсля другого. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити три процеси. Зробити так, щоб головний процес закiнчувався тiльки пiсля того, як припинять роботу усi його дочирнi процеси. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити три процеси. Зробити так, щоб головний процес закiнчувався пiсля будь-якого процесу, який закiнчить роботу першим (тобто завжди другим). Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити три процеси. Зробити так, щоб головний процес закiнчувався завжди пiсля другого процесу (процесу номер 2). Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити три процеси. Зробити так, щоб головний процес закiнчувався завжди третiм (пiсля буд-яких двох дочирнiх процесiв). Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб головний процес завжди закiнчувався перед останнiм. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб головний процес завжди закiнчувався тодi, коли активними залишаються ще два процеси. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб першими закiнчили свою роботу усi процеси з непарними номерами (у довiльному порядку). Батькiвський процес повинен завершитися першим. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб усi процеси з парними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи батькiвського процесу. Батькiвський процес повинен завершитися пiсля завершення останього процесу з непарним номером. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб усi процеси з парними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи одного з процесiв з непарним номером. Батькiвський процес повинен завершитися пiсля завершення останього процесу з непарним номером. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб усi процеси з непарними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи двох процесiв з парними номерами. Батькiвський процес повинен завершитися пiсля завершення останього процесу з непарним номером. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб усi процеси з парними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи одного з процесiв з непарним номером. Батькiвський процес повинен завершитися першим. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб усi процеси з непарними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи двох процесiв з парними номерами. Батькiвський процес повинен завершитися першим. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб усi процеси з парними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи одного з процесiв з непарним номером. Батькiвський процес повинен завершитися останнiм. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
Створити п'ять процесiв. Зробити так, щоб усi процеси з непарними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи двох процесiв з парними номерами. Батькiвський процес повинен завершитися останнiм. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
