Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7) презентация

Содержание


Презентации» Информатика» Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7)
Лекция 7
 МногопоточностьСодержание
 Возможности и преимущества многопоточности
 Способы реализации
 Механизмы синхронизацииВозможности и преимущества многопоточности
 Одновременное обслуживание нескольких клиентов в конфигурации клиент-сервер
Приоритеты и типы потоков
 Приоритет потока определяет долю квантов времени, выделяемыхПоточная модель Java
 Поток – экземпляр класса Thread
 Методы класса Thread:
Поточная модель Java
 Конструкторы класса Thread:
 	Thread(Runnable threadOb);
 	Thread(Runnable threadOb, StringКак создать поток?
 Поток в Java – экземпляр класса Thread
 РеализуемКак создать поток?
 public class MyThread extends Thread {
 		public voidКак создать поток?
 Наследование от Thread может привести к конфликту
 РеализуемКак создать поток?
 public class MyThread 
 					implements Runnable {
 		publicМетоды управления потоком
 Изнутри
 static void sleep(int mseconds) – приостановка работыСинхронизация
 При одновременной работе с общими переменными результат непредсказуем:
 Изменение переменнойБлокировка
 Блокировка устанавливается на объект
 Блокировка объекта может быть установлена толькоМодификатор synchronized
 Объявление synchronized-блока
 		synchronized (object) {
 			…
 		}
 	Устанавливается блокировкаDeadlock
 Взаимная блокировка потоков
 После блокировки одного объекта поток пытается установить



Слайды и текст этой презентации
Слайд 1
Описание слайда:
Лекция 7 Многопоточность


Слайд 2
Описание слайда:
Содержание Возможности и преимущества многопоточности Способы реализации Механизмы синхронизации

Слайд 3
Описание слайда:
Возможности и преимущества многопоточности Одновременное обслуживание нескольких клиентов в конфигурации клиент-сервер Реализация систем с активным участием пользователя в процессе вычислений (например, игры) Оптимизация скорости работы за счет распараллеливания работы с «медленными» периферийными устройствами Многопоточность не ускоряет систему

Слайд 4
Описание слайда:
Приоритеты и типы потоков Приоритет потока определяет долю квантов времени, выделяемых ему.  потоки низкого приоритета все равно продолжают исполняться Потоки-демоны (daemon) – потоки специального назначения, чаще всего – обслуживающие Приложение исполняется, пока существует хотя бы один «не-daemon» поток

Слайд 5
Описание слайда:
Поточная модель Java Поток – экземпляр класса Thread Методы класса Thread: public static Thread currentThread() – возвращает ссылку на поток из которого вызывается метод; final String getName() – получить имя потока; final void setName(String s) – задать имя потока; final int getPriority() – приоритет потока (+ setPriority(int n), MIN_PRIORITY = 1, MAX_PRIORITY = 10, NORM_PRIORITY = 5); final boolean isAlive() – позволяет выяснить исполняется поток или нет; final void join() throws InterruptedException – ожидание завершения потока; static void sleep(long n) throws InterruptedException – приостанавливает выполнение потока на n миллисекунд; void run() – определяет точку входа в поток; void start() – запускает поток, вызывая его метод run()

Слайд 6
Описание слайда:
Поточная модель Java Конструкторы класса Thread: Thread(Runnable threadOb); Thread(Runnable threadOb, String name); … при запуске программы начинает выполняться главный поток, в котором уже могут порождаться дочерние. Главный поток создается автоматически. В идеале программа начинает выполняться с главного потока и завершается с завершением главного потока.

Слайд 7
Описание слайда:
Как создать поток? Поток в Java – экземпляр класса Thread Реализуем класс-наследник Thread Переопределяем метод void run() Создаем экземпляр класса Вызываем метод… start() Виртуальная машина Java принимает решение о моменте запуска потока, производит его инициализацию и сама вызывает метод run()

Слайд 8
Описание слайда:
Как создать поток? public class MyThread extends Thread { public void run() { // вычисления } // метод start() реализовывать нельзя! } MyThread t = new MyThread(); t.start();

Слайд 9
Описание слайда:
Как создать поток? Наследование от Thread может привести к конфликту Реализуем интерфейс Runnable Создаем класс, реализующий интерфейс Runnable Реализуем метод void run() Создаем экземпляр класса Создаем экземпляр класса Thread, передавая в виде параметра ссылку на созданный экземпляр Runnable Вызываем метод start() у класса Thread

Слайд 10
Описание слайда:
Как создать поток? public class MyThread implements Runnable { public void run() { // вычисления } } Runnable r = new MyThread(); Thread t = new Thread(r); t.start();

Слайд 11
Описание слайда:
Методы управления потоком Изнутри static void sleep(int mseconds) – приостановка работы на указанное число миллисекунд static void yield() – приостановка работы и передача управления другим потокам (если они есть) Снаружи interrupt() – прерывание работы потока, у которого этот метод вызван. Порождает InterruptedException «внутрь» run()

Слайд 12
Описание слайда:
Синхронизация При одновременной работе с общими переменными результат непредсказуем: Изменение переменной = чтение; вычисления; запись (т.е. делается в несколько этапов) Примеры: банковский счет, продажа билетов

Слайд 13
Описание слайда:
Блокировка Блокировка устанавливается на объект Блокировка объекта может быть установлена только одним потоком Прочие действия с объектом остаются доступными Все другие потоки, попытавшиеся установить блокировку, ждут освобождения объекта При выполнении блокировки локальная память потока полностью синхронизируется с общей; при снятии – аналогично (в обратную сторону) Блокировка используется для обеспечения предсказуемости изменений объекта.

Слайд 14
Описание слайда:
Модификатор synchronized Объявление synchronized-блока synchronized (object) { … } Устанавливается блокировка на object Объявление synchronized-метода public void synchronized process() { … } Устанавливается блокировка на весь объект, содержащий synchronized-метод

Слайд 15
Описание слайда:
Deadlock Взаимная блокировка потоков После блокировки одного объекта поток пытается установить блокировку на второй; Второй поток установил блокировку второго объекта и пытается заблокировать первый; Оба потока находятся в режиме ожидания друг друга. В Java отсутствуют средства предотвращения или распознавания deadlock Также отсутствует проверка, заблокирован ли объект другим потоком Вопросы синхронизации должны внимательно решаться на этапе проектирования


Скачать презентацию на тему Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7) можно ниже:

Похожие презентации