Научился: Синхронизировать потоки Трудности: Описание урока
1. Обновить класс Worker: добавить счётчик count и заменить вечный цикл конечным, где вывести на экран номер итерации и значение счётчика..
2. Обновить основной класс Main: создать экземпляр класса Worker и с его помощью 5 безымянных экземпляров класса Thread.
3. Запустить программу и проанализировать результаты.
4. Дополнить класс Worker, добавив паузу sleep(10).
5. Запустить программу и сравнить новые результаты с предыдущими.
6. Устранить возникшую коллизию добавлением в класс Worker метода synchronized void next().
7. Запустить программу и убедиться в отсутствии коллизии.
8. Поэкспериментировать с различными вариантами функции next().
9. Объяснить в каких случаях и почему происходит замедление работы программы.
10. Сделать скриншот и выслать отчет на проверку.
Научился: Поэкспериментировали с потоками и коллизиями. Synchronized метод подразумевает, что он может выполняться только одним процессом в данный момент.
Св-во переменной volatile означает, что доступ или изменение данной переменной происходит тут же, без ожидания завершения операций над переменной другими потоками.
Время работы программы увеличилось из-за того, что в Synchronized метод next кроме основных операций была добавлена пауза Thread.sleep(10).