Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

 9913

-- vip

Клиент-серверный сокет / VIP. Синхрофазатрон

  • На этом слайде мы создадим коллизию и узнаем, как от неё избавиться.
  • Дата отправки отчёта: 14 декабря 2018 г.
  • Задание выполнено: за 15 час. 53 мин.
  • Чему научился: За синхронизировали потоки. Коллизия не совсем то как представлено в уроке. Коллизия — это столкновение норм права, регулирующих одни и те же общественные отношения. При коллизии действует закон, вступивший в силу позже (при прочих равных, то есть при одинаковой юридической силе). В математическом моделировании — столкновение объектов = вот откуда синхрофазотрон (ускоритель частиц - самый мощный на текущий момент циклический это БАК  Large Hadron Collider LHC, есть еще линейные - ну это из серии запуска Мюнхаузена на луну из пушки) получаем.
    В базах данных коллизия — событие, когда один пользователь запускает на выполнение транзакцию по изменению содержимого таблицы, а другой — на выборку из неё данных.
    Хорошая новость по Java - I IDEA умеет преобразовывать русский набор в правильный контекст - в отличии от VS-которая этого не умеет
  • Что было сложным: чем отличается synchronized от volatile - тем:
    Ключевое слово volatile указывается для поля для того, чтобы указать компилятору, что все операции присвоения этой переменной и все операции чтения из неё должны быть атомарными . volatile - ограничивает одновременный доступ на переменную
    synchronized - синхронизирует изменение переменной между процессами имеющими к ней доступ
    все бы было бы одинаково если бы не наше надрашивание count++ которое состоит из следующей операции count=count+1;
    пока мы взяли count подсчитать - другой поток туда успел значение новое присвоить. И мы уже это новое присвоенное значение складываем - вот вам и косяк.
    В других ситуациях synchronized и volatile приведут к одинаково правильному результату. Опять же все зависит от контекста применимости в конкретном случае.

    Программа работает медленнее из-за того что необходимо время для проведения синхронизации

    Долой параллелизм и супекомпьютеры! Да здравствует MSDOS 6.2!

    Магия чисел 14 урок 14.12.2018
  • Оценка видео-уроку:
Отчёт от 9913 за Клиент-серверный сокет / VIP. Синхрофазатрон


Отчёт от 9913 за Клиент-серверный сокет / VIP. Синхрофазатрон




Оцени работу

 
Сохранить страницу:

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  vip  # Клиент-серверный сокет / VIP. Синхрофазатрон / 2018-12-26 17:28

Ты уверен насчёт определения volatile? Уточни, пожалуйста.


  • Отчёт оценивали:
    9752chokayes+1   17947Dmitry Sinitsin+1   17255Слава+1   3922Александр+1   18419DenisMed+1   20567alexei0   19475Konstantin+1   11589Yefim+1   791Валерий Жданов+1   11019Trira+1   17606Виктор+1   19384Владимир+1   1Евгений Волосатов+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).