Мы узнали про volatile-переменные, в каких случаях они используются. Попробуем написать реализацию игрушки cамая бесполезная коробка. Один поток будет выключать тумблер, а второй будет эмулировать пользователя, то есть включать тумблер с какой-то периодичностью
- Создание поток-пользователь и поток-игрушка
- Поток-пользователь раз в несколько секунд включает тумблер
- Поток-игрушка как только обнаруживает включение - выключает тумблер
- Поток-пользователь, после нескольких итераций завершает выполнение
- Главный поток (main) после завершения потока-пользователя, останавливает поток-игрушку
- Включение и выключение тумблера должно сопровождаться выводами в консоль
- Все задержки (кол-во итераций работы потока, периодичность включения) должны быть оформлены в константах (никаких "Магических чисел")
Подсказка
- Тумблер используется более, чем одним потоком
- Чтобы отловить завершение потока-пользователя, можно использовать join() из лекции по синхронизации
- В потоке-игрушке нужно реализовать возможность прерывания потока (см. лекцию по работе с потоками)