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

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

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

Клиент-серверный сокет / VIP. Два потока

  • На этом слайде мы создадим простейшую программу с двумя потоками.
  • Дата отправки отчёта: 15 февраля 2019 г.
  • Задание выполнено: за 2 час. 29 мин.
  • Чему научился: для создания потока
    а) наследуем от Thread (extends Thread)
    или
    б) имплементируем Runnable (implements Runnable)

    Метод run запускает отдельный поток

    sleep(), wait() снижают нагрузку на процессор, создавая паузы выполнения инструкций в коде

    Для создания нового отдельного потока создаётся новый экземпляр класса Thread с передачей ему аргументом экземпляра first из класса Workerа имплементированного от Runnable

    Чтобы ограничить доступ к методам, и позволить только одному потоку менять данные там в какой-либо момент времени, мы используем ключевое слово synchronized.

    Synchronized  позволяет заблокировать доступ к методу или части кода, если его уже использует другой поток.
  • Оценка видео-уроку:
Отчёт от 17947 за Клиент-серверный сокет / VIP. Два потока


Отчёт от 17947 за Клиент-серверный сокет / VIP. Два потока




Оцени работу

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

17947. --
Dmitry Sinitsin
Dmitry Sinitsin
ответить
# Клиент-серверный сокет / VIP. Два потока / 2019-02-15 14:52

Термины про synchronized:

Монитор
Ключевое слово synchronized позволяет "войти в монитор объекта".
Монитор - это специальный объект, который следит за "состоянием" метода или объекта. Он смотрит, "занят" он или "свободен" в данный момент.

Атомарный
Многие проблемы с потоками возникают тогда, когда два потока, используя один метод, мешают друг другу.
Они могут менять значения переменных, которые использует другой поток.
Атомарный - значит "неделимый" - в том смысле, что операция может быть завершена одним потоком, и другой не может в ней ничего "напортить".

Минус synchronized:
Недостатком использования synchronized является как раз то, что другие потоки вынуждены ждать, пока нужный объект или метод освободится.
Это создает так называемый "bottle neck" ("узкое место") в программе - и скорость работы может пострадать.


2146. --
Иван
Иван
ответить
→  Dmitry Sinitsin  # Клиент-серверный сокет / VIP. Два потока / 2019-02-19 10:11

Глубоко! Да, Ваши отчеты хочется в "избранное" сохранять


  • Отчёт оценивали:
    21026Діма0   11589Yefim+1   18131Александр+1   Посетитель+1   Посетитель+1   9480Кирилл+1   20659no name+1   6203Николай Миролюбов+1   11353AlliZzeN+1   14981DimanDOS+1   8275Tekashnik+1   9752chokayes+1   3922Александр+1   9913vip+1   791Валерий Жданов+1   17947Dmitry Sinitsin+1   2146Иван+1  

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: для создания потока а) наследуем от Thread (extends Thread) или б) имплементируем Runnable (implements Runnable) Метод run запускает отдельный поток sleep(), wait() снижают нагрузку на процессор, создавая паузы выполнения инструкций в коде Для создания нового отдельного потока создаётся новый экземпляр класса Thread с передачей ему аргументом экземпляра first из класса Workerа имплементированного от Runnable Чтобы ограничить доступ к методам, и позволить только одному потоку менять данные там в какой-либо момент времени, мы используем ключевое слово synchronized. Synchronized  позволяет заблокировать доступ к методу или части кода, если его уже использует другой поток.



Научился: Для класса Worker я создал конструктор с 2 мя параметрами именем потока и временем ожидания
Трудности: 1. Создать новый проект с именем ThreadExample 2. Создать класс с имлементацией интерфейса Runnable и реализовать в нем метод Run(); 3. Реализовать основной класс Main, в котором создать экземпляры классов Worker и Thread. 4. Вызвать метод start() класса Thread. 5. Организовать отдельный поток в виде вечного цикла в основном классе. 6. Запустить программу и убедиться в работоспособности двух потоков. 7. Добавить третий поток и протестировать программу.