Курс многопоточности в Java. Задания
1. Создать класс расширяющий Thread
- Создать класс
NewThread
расширяющий класс Thread. - Переопределить метод
run()
. В цикле for вывести на консоль символ 100 раз. - Создать экземпляр класса и запустить новый поток.
2. Создать класс реализующий Runnable
- Создать класс, реализующий интерфейс Runnable.
- Переопределить
run()
метод. Создать циклfor
. В цикле распечатываем значения от 0 до 100 делящиеся на 10 без остатка. - Используем статический метод Thread.sleep(), чтобы сделать паузу.
- Создать три потока, выполняющих задачу распечатки значений.
3. Вывод символа в трех потоках
Необходимо создать три потока, которые изменяют один и тот же объект. Каждый поток должен вывести на экран одну букву 100 раз, и затем увеличить значение символа на 1.
- Создать класс расширяющий
Thread
. - Переопределить метод
run()
- здесь будет находиться синхронизированный блок кода. - Для того чтобы три объекта потока имели доступ к одному объекту, создаем конструктор принимающий на вход StringBuilder объект.
- Синхронизированный блок кода будет получать монитор на объект
StringBuilder
из пункта 3. - Внутри синхронизированного блока кода выведите
StringBuilder
на экран 100 раз, а потом увеличьте значение символа на 1. - В методе
main()
создайте один объект классаStringBuilder
, используя символ ‘a’. - Затем создайте три экземпляра объекта нашего класса и запустите потоки.
Решение на Patreon.
4. Изменить класс MyQueue
Изменить класс MyQueue
из Межпотоковые коммуникации:
- Вместо
int n
добавитьQueue<T>
(MyQueue
сделать обобщенным), которая будет содержать объекты создаваемыеProducer
. - Добавьте еще один объект
Consumer
, который будет запускаться тоже отдельным потоком. - Выводите на консоль какой из объектов
Consumer
обработал объект из очереди. - Измените цикл
for
на бесконечный цикл.
Решение на Patreon.
5. Обедающие философы
- Пять безмолвных философов сидят вокруг круглого стола, перед каждым философом стоит тарелка спагетти.
- Вилки лежат на столе между каждой парой ближайших философов.
- Каждый философ может либо есть, либо размышлять.
- Философ может есть только тогда, когда держит две вилки — взятую справа и слева.
- Взятие каждой вилки и возвращение её на стол являются раздельными действиями, которые должны выполняться одно за другим.
При написании программ обращайте внимание на рекомендации по оформлению кода.
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.