Многопоточное программирование. Поточная модель Java, страница 2

3. Что будет делать следующий поток?

class CountThread: public Thread

{

public:

void run()

{

For   (int i=0; i<1000; ++i)

{

cout << "i=" << i << endl;

sleep(1);

}

}

}

а) выводит через каждую секунду значение i; б) данный программный код не имеет смысла;

в) меняет через каждую секунду значение i;

г) передвигает объект.

4. Какие из следующих методов заканчивают выполнение потока?

а) destroy ();

б) yield ();

в) sleep ();

г) stop ().

Ответы на тесты:  …(1) в…(2) д…(3) б…(4) а…

7.7. Приоритеты потоков

Вопросы

1. Для чего используются приоритеты потоков?

2. Какой метод используется для установки приоритета потока?

3. С помощью какого метода можно получить текущую установку приоритета потока?

Тест

1. Если процесс создал несколько потоков, то все они выполняются:

а) по очереди;

б) параллельно;

в) через определенные промежутки времени;

г) вообще не выполняются.

2. Какого приоритета потоков не существует?

а) NORM_PRIORITY;

б) MIN_PRIORITY

в) MIDDLE_PRIORITY; г) MAX_PRIORITY.

3. Какой приоритет имеет вновь созданный поток по умолчанию?

а) NORM_PRIORITY;

б) MIN_PRIORITY

в) MIDDLE_PRIORITY;

г) MAX_PRIORITY.

4. Переключение от одного выполняющегося потока к следующему называется:

а) переключение потоков;

б) переключение контекста;

в) переключение приоритетов;

г) переход.

Ответы на тесты:  …(1) б…(2) в…(3) а…(4) б…

7.8. Синхронизация

Вопросы

1. Что такое синхронизация потоков?

2. Что обеспечивается с ее помощью?

3. Что такое концепция монитора (семафора)?

5. Сколько способов синхронизации кода существует?

Тест

1. Как называется способ, позволяющий добиться синхронности выполнения процессов?

а) монитор;

б) семафор;

в) многопоточность;

г) синхронизация.

2. Для взаимоисключающей блокировки на критических участках программы используется а) монитор;

б) семафор;

в) синхронизация;

г) многопоточность.

3. Какими из следующих способов осуществляется синхронизация кода?

а) синхронизация класса; б) синхронизация интерфейса;

в) синхронизация метода;

г) синхронизация объекта.

Ответы на тесты:  …(1) г…(2) б…(3) в, г…

7.9. Использование синхронизированных методов

Вопросы

1. Что такое монитор (семафор) объекта?

2. Каким ключевым словом должен быть модифицирован метод, вызываемый  для того, чтобы ввести монитор объекта?

3. Для чего оно используется?

4. Если поток вызвал синхронизированный метод на данном экземпляре, может ли какой-либо другой поток вызвать другой  синхронизированный метод на этом же экземпляре?

5. Что обеспечивает простоту синхронизации в Java?

Тест

1. Какой метод используют для введения монитора объекта?

а) monitor;

б) synchronized;

в) run;

г) sleep.

2. Какой способ синхронизации использован в следующем программном коде?

synchronized void myMethod ()

{…}

a) синхронизация объекта;

б) синхронизация класса;

в) синхронизация метода;

г) синхронизация интерфейса.

3. Какой способ синхронизации использован в следующем программном коде?

synchronized (object)

{…}

a) синхронизация объекта;

б) синхронизация класса;

в) синхронизация метода;

г) синхронизация интерфейса.

4.  Сколько всего способов синхронизации существует?

а) 1;

б) 2;

в) 3;

г) 4.

Ответы на тесты:  …(1) б…(2) в…(3) а…(4) б…

7.10. Оператор synchronized

Вопросы

1. Какими двумя способами можно синхронизировать код?

2. В каких случаях определения синхронизированных методов внутри классов не работают? Как можно решить эту проблему?

4. Для чего используется оператор synchronized?

5. Приведите общую форму оператора synchronized.

Тест

1. Какая из следующих частей программного кода эквивалентна данному выражению?

synchronized void myMethod ()

{…} а) void myMethod ()

{synchronized (this)

{…}

}

б) void myMethod (this)

{synchronized ()

{…}

}

в) void myMethod (synchronized)

{…}

г) vo    id myMethod ()

{synchronized ()

{…}

}

2. Общая форма оператора synchronized выглядит следующим образом:

а) synchronized (object)

{…}

б) void myMethod (this)

{synchronized ()

{…}

}

в) void synchronized ()

{…}

г) public void synchronized ()

{…}

3. Если какой-либо поток начнет выполнять участок кода, определенный как synchronized, то для других потоков этот участок:

а) будет заблокирован б) будет находиться в ожидании в) будет продолжать выполняться г) будет удален нету

Ответы на тесты:  …(1) …(2) …(3) а…

7.11. Использование многопоточности

Вопросы

1. Что такое многопоточность?

2. В чем заключается ценность многопоточной среды?

4. Почему созданием многого количества потоков можно ухудшить эффективность программы? Какие издержки возникают при этом?

Тест

1. Из предложенного списка выберите преимущества многопоточности а) упрощение программы в некоторых случаях, за счет использования общего адресного пространства б) меньшие относительно процесса временные затраты на создание потока в) выполнение задачи в одном потоке г) повышение производительности процесса за счет распараллеливания процессорных вычислений и операций ввода/вывода.

2. Как называются части, на которые делится задача в многопоточной среде?

а) мониторы б) семафоры в) функции г) потоки выполнения

Ответы на тесты:  …(1) а, б, г…(2) г…