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

 

Завдання:

  1. Створити файл MyWindow.java зi змiстом, який наведено вище.
  2. Вiдкомпiлювати його, перевiривши тим сами синтаксичну вiрнiсть.
  3. Використовуючи утiлiту Javadoc, сгенерувати супровiдну документацiю.
  4. З'ясувати особливостi використання тегiв:
    1. @author
    2. @version
    3. @param
    4. @return
    5. @exception
    6. @see
    7. @since
    8. @serial
    9. @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сть завершити роботу.

 

Завдання

  1. Розглянути, вiдкомпiлювати та запустити на виконання наведений приклад.
  2. З'ясувати принципи багатопоточної синхронiзацiї за допомогою глобальної змiнної.
  3. З'ясувати особливост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 завдання до захисту роботи

  1. Зробити так, щоб другий процес робив циклiв бiльше за усi iншi.
  2. Зробити парну кiлькiсть процесiв. Хай кожен парний процес робить циклiв в двiчi бiльше нiж непарний.
  3. Створити три процеси. Зробити так, щоб другий процес завжди закiнчувався останнiм. Не змiнювати часи затримки. Використати додаткову загальну змiнну.
  4. Створити три процеси. Зробити так, щоб перший процес припиняв роботу другого, а другий третього. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  5. Створити три процеси. Зробити так, щоб перший процес припиняв роботу усiх iнших процесiв. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  6. Створити три процеси. Зробити так, щоб перший процес завжди припиняв роботу другим. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  7. Створити три процеси. Зробити так, щоб перший процес завжди припиняв роботу пiсля другого. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  8. Створити три процеси. Зробити так, щоб головний процес закiнчувався тiльки пiсля того, як припинять роботу усi його дочирнi процеси. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  9. Створити три процеси. Зробити так, щоб головний процес закiнчувався пiсля будь-якого процесу, який закiнчить роботу першим (тобто завжди другим). Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  10. Створити три процеси. Зробити так, щоб головний процес закiнчувався завжди пiсля другого процесу (процесу номер 2). Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  11. Створити три процеси. Зробити так, щоб головний процес закiнчувався завжди третiм (пiсля буд-яких двох дочирнiх процесiв). Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  12. Створити п'ять процесiв. Зробити так, щоб головний процес завжди закiнчувався перед останнiм. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  13. Створити п'ять процесiв. Зробити так, щоб головний процес завжди закiнчувався тодi, коли активними залишаються ще два процеси. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  14. Створити п'ять процесiв. Зробити так, щоб першими закiнчили свою роботу усi процеси з непарними номерами (у довiльному порядку). Батькiвський процес повинен завершитися першим. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  15. Створити п'ять процесiв. Зробити так, щоб усi процеси з парними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи батькiвського процесу. Батькiвський процес повинен завершитися пiсля завершення останього процесу з непарним номером. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  16. Створити п'ять процесiв. Зробити так, щоб усi процеси з парними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи одного з процесiв з непарним номером. Батькiвський процес повинен завершитися пiсля завершення останього процесу з непарним номером. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  17. Створити п'ять процесiв. Зробити так, щоб усi процеси з непарними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи двох процесiв з парними номерами. Батькiвський процес повинен завершитися пiсля завершення останього процесу з непарним номером. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  18. Створити п'ять процесiв. Зробити так, щоб усi процеси з парними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи одного з процесiв з непарним номером. Батькiвський процес повинен завершитися першим. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  19. Створити п'ять процесiв. Зробити так, щоб усi процеси з непарними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи двох процесiв з парними номерами. Батькiвський процес повинен завершитися першим. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  20. Створити п'ять процесiв. Зробити так, щоб усi процеси з парними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи одного з процесiв з непарним номером. Батькiвський процес повинен завершитися останнiм. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.
  21. Створити п'ять процесiв. Зробити так, щоб усi процеси з непарними номерами закiнчили свою роботу (у довiльному порядку) тiльки пiсля закiнчення роботи двох процесiв з парними номерами. Батькiвський процес повинен завершитися останнiм. Не змiнювати часи затримки. Використати додатковi загальнi змiннi.

 


 

Лабораторна робота №4.