Курс многопоточности в 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. Обедающие философы
- Пять безмолвных философов сидят вокруг круглого стола, перед каждым философом стоит тарелка спагетти.
- Вилки лежат на столе между каждой парой ближайших философов.
- Каждый философ может либо есть, либо размышлять.
- Философ может есть только тогда, когда держит две вилки — взятую справа и слева.
- Взятие каждой вилки и возвращение её на стол являются раздельными действиями, которые должны выполняться одно за другим.
При написании программ обращайте внимание на рекомендации по оформлению кода.

Please log in or register to have a possibility to add comment.