Презентация Многопоточное программирование. Принципы и реализация в java. (Лекция 11) онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Многопоточное программирование. Принципы и реализация в java. (Лекция 11) абсолютно бесплатно. Урок-презентация на эту тему содержит всего 36 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Многопоточное программирование. Принципы и реализация в java. (Лекция 11)
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:36 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:846.47 kB
- Просмотров:84
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№2 слайд
![План лекции Многопоточное](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img1.jpg)
Содержание слайда: План лекции
Многопоточное программирование и его особенности
Потоки и работа с ними
Группы потоков
Приоритеты потоков
Демон-потоки
Блокировки и синхронизация
Новые виды ошибок
Совместная работа с полями и переменными
Методы класса Object
Прерывание потоков
Высокоуровневые средства
№6 слайд
![Особенности многопоточности](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img5.jpg)
Содержание слайда: Особенности многопоточности
Простота выделения подзадач
Более гибкое управление выполнением задач
Более медленное выполнение
Выигрыш в скорости выполнения
при разделении задач
по используемым ресурсам
Выигрыш в скорости
выполнения на
многоядерных системах
Недетерминизм при
выполнении
№9 слайд
![Особенности использования](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img8.jpg)
Содержание слайда: Особенности использования интерфейса Runnable
Возможность создать класс, описывающий тело потока и наследующий от класса, отличного от Thread
Объект вашего класса не является объектом потока
Невозможно использовать напрямую методы класса Thread
Можно получить ссылку на объект текущего потока с помощью статического метода currentThread() класса Thread
№10 слайд
![Управление потоками void](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img9.jpg)
Содержание слайда: Управление потоками
void start()
Запускает выполнение потока
void stop()
Прекращает выполнение потока
void suspend()
Приостанавливает выполнение потока
void resume()
Возобновляет выполнение потока
void join()
Останавливает выполнение текущего потока до завершения потока, у объекта которого был вызван метод
static void sleep(long millis)
Останавливает выполнение текущего потока как минимум на millis миллисекунд
static void yield()
Приостанавливает выполнение текущего потока, предоставляет возможность выполнять другие потоки
№13 слайд
![Операции в группе потоков int](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img12.jpg)
Содержание слайда: Операции в группе потоков
int activeCount()
Возвращает оценку количества потоков
int enumerate(Thread[] list)
Копирует в массив активные потоки
int activeGroupCount()
Возвращает оценку количества подгрупп
int enumerate(ThreadGroup[] list)
Копирует в массив активные подгруппы
void interrupt()
Прерывает выполнение всех потоков в группе
№14 слайд
![Приоритеты потоков Приоритет](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img13.jpg)
Содержание слайда: Приоритеты потоков
Приоритет – количественный показатель важности потока
Недетерминированно воздействуют на системную политику упорядочивания потоков
Базовый алгоритм программы не должен зависеть от схемы расстановки приоритетов потоков
При задании
значений приоритетов
рекомендуется
использовать константы
№16 слайд
![Демон-потоки Daemons](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img15.jpg)
Содержание слайда: Демон-потоки
(Daemons)
Демон-потоки позволяют описывать фоновые процессы, которые нужны только для обслуживания основных потоков выполнения и не могут существовать без них
Уничтожаются виртуальной машиной, если в группе не осталось не-демон потоков
void setDaemon(boolean on)
Устанавливает вид потока
Вызывается до запуска потока
boolean isDaemon()
Возвращает вид потока:
true – демон, false – обычный
№19 слайд
![Блокировки Только один поток](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img18.jpg)
Содержание слайда: Блокировки
Только один поток в один момент времени может установить блокировку на некоторый объект
Попытка блокировки уже
заблокированного объекта
приводит к останову
потока до момента
разблокирования этого
объекта
Наличие блокировки
не запрещает всех
остальных действий
с объектом
№23 слайд
![Совместная работа с полями и](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img22.jpg)
Содержание слайда: Совместная работа с полями и переменными
Значения переменных изменяются атомарным образом (кроме double и long)
При совместной работе с полем может возникнуть неоднозначность
Например, на объект, на который ссылается переменная, наложена блокировка, после чего значение переменной изменяется
Например, компилятор может оптимизировать фрагмент кода, предполагая, что поле не изменяет значение
№24 слайд
![Модификатор полей и](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img23.jpg)
Содержание слайда: Модификатор полей и переменных final
После первого присвоения переменная не может изменять своё значение
Если блокировка накладывается на объект, ссылка на который хранится в поле, поле обычно делают неизменяемым
Локальные и анонимные классы могут обращаться к локальным переменным, только если они неизменяемы
№25 слайд
![Модификатор полей volatile](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img24.jpg)
Содержание слайда: Модификатор полей volatile
Предупреждает компилятор о том, что переменная может изменить своё значение в произвольный момент времени
Обращение к переменной всегда будет возвращать именно последнее присвоенное ей значение
Если работа с полем ведётся только в синхронизированном коде, применение модификатора неосмысленно
№26 слайд
![Специальные методы класса](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img25.jpg)
Содержание слайда: Специальные методы
класса Object
Каждый объект имеет набор ожидающих потоков исполнения (wait-set)
Любой поток может вызвать метод wait() любого объекта и попасть в его wait-set, остановившись до пробуждения
Метод объекта notify() пробуждает один, случайно выбранный поток из wait-set объекта
Метод объекта notifyAll() пробуждает все потоки из wait-set объекта
№27 слайд
![Особенности использования](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img26.jpg)
Содержание слайда: Особенности использования методов класса Object
Метод может быть вызван потоком у объекта только после установления блокировки на этот объект
Потоки, прежде чем приостановить выполнение после вызова метода wait(), снимают все свои блокировки
После вызова
освобождающего метода
потоки пытаются восстановить
ранее снятые блокировки
№29 слайд
![Корректное прерывание потока](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img28.jpg)
Содержание слайда: Корректное прерывание потока
public void interrupt()
Изменяет статус потока на прерванный
public static boolean interrupted()
Возвращает и очищает статус потока (прерван или нет)
public boolean isInterrupted()
Возвращает статус потока (прерван или нет)
Поток должен в ходе своей работы проверять свой статус и корректно завершать работу, если его прервали
№33 слайд
![java.util.concurrent Пакет](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img32.jpg)
Содержание слайда: java.util.concurrent
Пакет содержит высокоуровневый инструментарий для многопоточных приложений
Пакет содержит следующие категории инструментов
Executors – средства запуска потоков
Synchronizers – средства синхронизации работы потоков
Timing – вспомогательные средства контроля времени
Concurrent structures – структуры, корректно работающие в многопоточных приложениях (без блокировки всей структуры)
№34 слайд
![java.util.concurrent](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img33.jpg)
Содержание слайда: java.util.concurrent
java.util.concurrent.atomic
пакет содержит классы оберток для базовых типов, обеспечивающие корректный доступ к значениям в многопоточных приложениях
java.util.concurrent.locks
пакет содержит высокоуровневые средства работы с блокировками и критическими секциями
№36 слайд
![Дополнительные источники](/documents_6/17222141ec41aa39771bd1fd9b09ce3e/img35.jpg)
Содержание слайда: Дополнительные источники
Арнолд, К. Язык программирования Java [Текст] / Кен Арнолд, Джеймс Гослинг, Дэвид Холмс. – М. : Издательский дом «Вильямс», 2001. – 624 с.
Вязовик, Н.А. Программирование на Java. Курс лекций [Текст] / Н.А. Вязовик. – М. : Интернет-университет информационных технологий, 2003. – 592 с.
Хорстманн, К. Java 2. Библиотека профессионала. Том 2. Тонкости программирования [Текст] / Кей Хорстманн, Гари Корнелл. – М. : Издательский дом «Вильямс», 2010 г. – 992 с.
Эккель, Б. Философия Java [Текст] / Брюс Эккель. – СПб. : Питер, 2011. – 640 с.
JavaSE at a Glance [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/overview/index.html, дата доступа: 21.10.2011.
JavaSE APIs & Documentation [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html, дата доступа: 21.10.2011.
Скачать все slide презентации Многопоточное программирование. Принципы и реализация в java. (Лекция 11) одним архивом:
Похожие презентации
-
Основы программирование: Введение в Java. Коллекции
-
Расширенные возможности многопоточного программирования. Лекция 1
-
Методы и системы программирования. Основные принципы объектно-ориентированного программирования. Лекция 5
-
Язык программирования JAVA. Классы коллекций
-
Программирование на языке Java. Введение. (Лекция 1)
-
Программирование на языке Java. Примитивные типы данных. Операции, комментарии. (Лекция 2. 1)
-
Программирование на Java. Массивы в Java. (Лекция 3. 2)
-
Программирование на Java. Программирование клиент-серверных Java-приложений. Сервлеты ( Лекция 1. 1)
-
Программирование на Java. Объектная модель Java. (Лекция 3. 1)
-
Программирование на Java. Объектная модель Java. (Лекция 3. 2)