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

Нажмите для полного просмотра!
Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №1Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №2Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №3Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №4Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №5Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №6Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №7Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №8Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №9Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №10Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №11Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №12Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №13Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №14Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7), слайд №15

Вы можете ознакомиться и скачать презентацию на тему Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7). Доклад-сообщение содержит 15 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Лекция 7
Многопоточность
Описание слайда:
Лекция 7 Многопоточность

Слайд 2





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

Слайд 3





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

Слайд 4





Приоритеты и типы потоков
Приоритет потока определяет долю квантов времени, выделяемых ему.
	 потоки низкого приоритета все равно продолжают исполняться
Потоки-демоны (daemon) – потоки специального назначения, чаще всего – обслуживающие
Приложение исполняется, пока существует хотя бы один «не-daemon» поток
Описание слайда:
Приоритеты и типы потоков Приоритет потока определяет долю квантов времени, выделяемых ему.  потоки низкого приоритета все равно продолжают исполняться Потоки-демоны (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()
Описание слайда:
Поточная модель 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);
	…
	при запуске программы начинает выполняться главный поток, в котором уже могут порождаться дочерние. Главный поток создается автоматически. В идеале программа начинает выполняться с главного потока и завершается с завершением главного потока.
Описание слайда:
Поточная модель Java Конструкторы класса Thread: Thread(Runnable threadOb); Thread(Runnable threadOb, String name); … при запуске программы начинает выполняться главный поток, в котором уже могут порождаться дочерние. Главный поток создается автоматически. В идеале программа начинает выполняться с главного потока и завершается с завершением главного потока.

Слайд 7





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

Слайд 8





Как создать поток?
public class MyThread extends Thread {
		public void run() {
			// вычисления
		}
		// метод start() реализовывать нельзя!
}
MyThread t = new MyThread();
t.start();
Описание слайда:
Как создать поток? 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
Описание слайда:
Как создать поток? Наследование от 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();
Описание слайда:
Как создать поток? 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()
Описание слайда:
Методы управления потоком Изнутри 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-метод
Описание слайда:
Модификатор synchronized Объявление synchronized-блока synchronized (object) { … } Устанавливается блокировка на object Объявление synchronized-метода public void synchronized process() { … } Устанавливается блокировка на весь объект, содержащий synchronized-метод

Слайд 15





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



Похожие презентации
Mypresentation.ru
Загрузить презентацию