На этом слайде мы создадим коллизию и узнаем, как от неё избавиться.
Дата отправки отчёта:
16 февраля 2019 г.
Задание выполнено: за
32 мин.
Чему научился:
volatile - применяется для моментального чтения переменных, минуя кеширование
synchronized - добавляем в сигнатуру метода, когда надо, чтобы к нему в один момент времени имел доступ один процесс, а не более одного!
Пауза обусловлена уникальным доступом к методу слип для всех пяти потоков, как я понял
Оценка видео-уроку:
Оцени работу
Сохранить страницу:
Отчёт оценивали: 20659. no name+120528. Геннадий Кравцов+120775. Віталій0791. Валерий Жданов+13922. Александр+19752. chokayes+19913. vip+12146. Иван+111353. AlliZzeN+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).