Вход

Практикум по программированию на Java 2[РОСДИСТАНТ] Практическое задание 4

Рекомендуемая категория для самостоятельной подготовки:
Контрольная работа*
Код 551852
Дата создания 2023
Мы сможем обработать ваш заказ (!) 20 мая в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
850руб.
КУПИТЬ

Описание

Тема 5. Java Threads. Синхронизация потоков (часть 2)

Цель работы: сформировать навыки работы с технологиями Java Threads.

Задание. Разработать многопоточное приложение.

Рекомендации по выполнению задания

· Работы обязательно сопровождаются отчетом, включающим код программы с комментариями и экранные формы результатов выполнения программного кода.

· Студент может выполнить не все задания, а только часть в каждой работе (если их несколько). Следует отметить, что в этом случае итоговая оценка будет рассчитываться пропорционально выполненным заданиям.

1. Объявите и инициализируйте глобальные данные/переменные, которые требуют синхронизации (например, «count»). Объявите и инициализируйте связанный мьютекс.

Создайте потоки A и B для работы.

Поток А

- Работает до момента, когда должно произойти определенное условие (например, «счетчик» должен достичь указанного значения).

- Блокирует связанный мьютекс и проверяет значение глобальной переменной.

- Вызовает pthread_cond_wait(), чтобы выполнить блокирующее ожидание сигнала от Thread-B. Обратите внимание, что вызов pthread_cond_wait() автоматически и атомарно разблокирует связанную переменную мьютекса, чтобы она могла использоваться Thread-B.

- При получении сигнала поток А просыпается, мьютекс автоматически блокируется атомарно.

Поток B

- Меняет значение глобальной переменной, которую ожидает Thread-A.

- Проверяет значение глобальной переменной ожидания Thread-A. Если оно удовлетворяет желаемому условию, сигнализирует Thread-A.

- Разблокирует мьютекс.

2. Разработайте многопоточное приложение (использующее общую переменную):

- в потоке объявлена приватная переменная, например, i=0. При выполнении потока i инкриминируется, к примеру, 100 раз. При каждом инкременте на консоль выводится значение i;

- основная программа создает два потока. Необходимо проанализировать изменение i.

Выясните, как изменится поведение программы, если i объявить как локальную переменную (переменная метода run()).

3. Разработайте многопоточное приложение:

- один поток считывает текст собственной программы;

- второй поток получает считанную строку, анализирует вхождение образца и по условию выводит строку на экран.

4. Разработайте многопоточное приложение, реализующее кольцевой буфер в задаче «производитель – потребитель». Программа должна порождать процессы «производители» количеством K>1 и процессы «потребители» – M>1. Размер буфера N элементов. Частота работы производителя меньше в среднем в 10 раз частоты работы потребителя. Частоты задаются случайно. Производитель пишет в буфер в среднем 10 значений.

5. Предоставьте отчет, который содержит текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные при выполнении указанных заданий программы.

При оформлении кода использование комментариев обязательно.

Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00476
© Рефератбанк, 2002 - 2024