Курс многопоточности в 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.