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

Описание

Тема 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. Предоставьте отчет, который содержит текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные при выполнении указанных заданий программы.

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

    
            Описание
            Тема 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.         Предоставьте отчет, который содержит текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные при выполнении указанных заданий программы.	При оформлении кода использование комментариев обязательно.   
            
            
            Практикум по программированию на Java 2[РОСДИСТАНТ] Практическое задание 3Практикум по программированию на Java 2[РОСДИСТАНТ] Практическое задание 4Практикум по программированию на Java 2[РОСДИСТАНТ] Практическое задание 5Практикум по программированию на Java 2[РОСДИСТАНТ] Практическое задание 6Практикум по психодиагностикеПрактикум по психодиагностикеПрактикум по психодиагностике (ответы Синергия /МОСАП /МТИ)Практикум по программированию на Java 1Практикум по программированию на Java 1Практикум по программированию на Java 1Практикум по программированию на Java 1Практикум по программированию на Java 1Практикум по программированию на Java 1Практикум по программированию на Java 2[РОСДИСТАНТ]Практическое задание 1