- •Лабораторна робота №2.
- •Приклад документованого тексту програми.
- •Виклик утiлiти Javadoc з командного рядка.
- •Завдання:
- •Лабораторна робота №3.
- •Теоретичнi вiдомостi.
- •Завдання
- •Iндивiдуальнi завдання до захисту роботи
- •Лабораторна робота №4.
- •Теоретичнi вiдомостi.
- •Завдання
- •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в з курсу “Паралельне програмування”
Лабораторна робота №2.
Тема: Дослiдження системи автоматичної генерацiї супровiдної документацiї Javadoc.
Мета: Опанувати методику автоматичної генерацiї супровiдної документацiї з використанням утiлiти Javadoc.
Приклад документованого тексту програми.
package TestWindowsDoc; import java.awt.Window; import java.io.IOException; /** * A base class representing a window on the screen. */ class BaseWindow { public BaseWindow() { } /** * A simple method fo adding two values * @param a the first value. * @param b the second value. * @return the desired result. * @see MyWindow */ public int method( int a, int b) { return a + b; } } /** * <p>Класс, що уявляє вiконний дiалог на екранi.<br> * A class representing a window on the screen.<br> * For example (Наприклад): * <pre> * Window win = new Window(parent); * win.show(); * </pre> * * @author Sami Shaio * @version %I%, %G% * @see TestWindowsDoc.BaseWindow */ public class MyWindow extends BaseWindow { /** * The constant value of this field is the largest value of type * {@code char}, {@code '\u005CuFFFF'}. * * @since 1.0.2 */ public static final char MAX_VALUE = '\uFFFF'; /** * A main constructor of this class. * @param p1 the first value. * @param p2 the second value. */ public MyWindow( int p1, String p2) {} /** * A simple file read method. * @param a the first value. * @param b the second value. * @return the desired result. * @exception IOException * if the index is not in the range <code>0</code> * to <code>length()-1</code>. * @see #method( int a, int b) */ public int inputFile( int a, int b) throws IOException { return a + b; } } |
Виклик утiлiти Javadoc з командного рядка.
C:> javadoc -charset "windows-1251" MyWindow.java |
% javadoc -docencoding "ISO-8859-1" mypackage |
Завдання:
Створити файл MyWindow.java зi змiстом, який наведено вище.
Вiдкомпiлювати його, перевiривши тим сами синтаксичну вiрнiсть.
Використовуючи утiлiту Javadoc, сгенерувати супровiдну документацiю.
З'ясувати особливостi використання тегiв:
@author
@version
@param
@return
@exception
@see
@since
@serial
@deprecated
Лабораторна робота №3.
Тема: Орган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сть завершити роботу.
