На этом слайде мы создадим коллизию и узнаем, как от неё избавиться.
Дата отправки отчёта:
16 октября 2020 г.
Задание выполнено: за
37 мин.
Чему научился:
Эксперименты с оператором synchronized. Создали 5 потоков и все 5 потоков обращались к общей переменной, без оператора synchronized и с оператором synchronized, получается несколько потоков могут в разные моменты(присваивание и инкрементирование) менять общую переменную, что дает забавные результаты. Оператор volatile указывает виртуальной машине хранить значение этой переменной только в регистрах процессора.
Оценка видео-уроку:
Оцени работу
Сохранить страницу:
Отчёт оценивали: 6203. Николай Миролюбов+1791. Валерий Жданов+111051. Dima+125450. MaxB+128882. Vlad_Plestsov024765. Anatoli+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Синхронизировать потоки Трудности: Описание урока
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).