🗊Презентация Java. Параллельное выполнение

Нажмите для полного просмотра!
Java. Параллельное выполнение, слайд №1Java. Параллельное выполнение, слайд №2Java. Параллельное выполнение, слайд №3Java. Параллельное выполнение, слайд №4Java. Параллельное выполнение, слайд №5Java. Параллельное выполнение, слайд №6Java. Параллельное выполнение, слайд №7Java. Параллельное выполнение, слайд №8Java. Параллельное выполнение, слайд №9Java. Параллельное выполнение, слайд №10Java. Параллельное выполнение, слайд №11Java. Параллельное выполнение, слайд №12Java. Параллельное выполнение, слайд №13Java. Параллельное выполнение, слайд №14Java. Параллельное выполнение, слайд №15Java. Параллельное выполнение, слайд №16

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

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


Слайд 1





Java
Параллельное 
выполнение
Описание слайда:
Java Параллельное выполнение

Слайд 2





Терминология
При переводе на русский ДВА английских термина имеют одинаковое значение – поток:
stream
thread
Thread имеет еще одно значение - нить
Описание слайда:
Терминология При переводе на русский ДВА английских термина имеют одинаковое значение – поток: stream thread Thread имеет еще одно значение - нить

Слайд 3





Поток и процесс 
Процесс – это задача операционной системы. 
У него собственное адресное пространство. 
С ним может быть проассоциировано несколько потоков. 
Поток – это гораздо более мелкая единица. 
Все потоки разделяют адресное пространство породившего их процесса и имеют доступ к одним данным.
Описание слайда:
Поток и процесс Процесс – это задача операционной системы. У него собственное адресное пространство. С ним может быть проассоциировано несколько потоков. Поток – это гораздо более мелкая единица. Все потоки разделяют адресное пространство породившего их процесса и имеют доступ к одним данным.

Слайд 4





Threads
Потоки – средство, которое помогает организовать одновременное выполнение нескольких задач, каждую в независимом потоке. 
Потоки представляют собой классы, каждый из которых запускается и функционирует самостоятельно, автономно(или относительно автономно) от главного потока выполнения программы. 
Существуют два способа создания и запуска потока: 
расширение класса Thread 
реализация интерфейса Runnable.
Описание слайда:
Threads Потоки – средство, которое помогает организовать одновременное выполнение нескольких задач, каждую в независимом потоке. Потоки представляют собой классы, каждый из которых запускается и функционирует самостоятельно, автономно(или относительно автономно) от главного потока выполнения программы. Существуют два способа создания и запуска потока: расширение класса Thread реализация интерфейса Runnable.

Слайд 5





Планировщик и сборщик мусора
Часть потокового механизма Java, обеспечивающая переключение процессора между потоками.
Если на компьютере установлено несколько процессоров, планировщик потоков автоматически распределяет потоки между разными процессорами. 
Работа планировщика потоков недетерминирована.
Когда метод main() создает объекты-потоки Thread, он не сохраняет на них ссылки. 
Каждый поток (Thread) самостоятельно «регистрирует» себя, то есть на самом деле ссылка на него где-то существует, и сборщик мусора не вправе удалить его объект.
Описание слайда:
Планировщик и сборщик мусора Часть потокового механизма Java, обеспечивающая переключение процессора между потоками. Если на компьютере установлено несколько процессоров, планировщик потоков автоматически распределяет потоки между разными процессорами. Работа планировщика потоков недетерминирована. Когда метод main() создает объекты-потоки Thread, он не сохраняет на них ссылки. Каждый поток (Thread) самостоятельно «регистрирует» себя, то есть на самом деле ссылка на него где-то существует, и сборщик мусора не вправе удалить его объект.

Слайд 6





Жизненный цикл потока
Описание слайда:
Жизненный цикл потока

Слайд 7





Состояния потока
Поток может находиться в одном из состояний, соответствующих элементам статически вложенного перечисления Thread.State:
NEW – поток создан, но еще не запущен;
RUNNABLE – поток выполняется;
BLOCKED – поток блокирован (ожидает входа в синхронизированный блок/метод);
WAITING – поток ждет окончания работы другого потока;
TIMED_WAITING – поток некоторое время ждет окончания другого потока;
TERMINATED — поток завершен.
Получить значение состояния потока можно вызовом метода getState().
Описание слайда:
Состояния потока Поток может находиться в одном из состояний, соответствующих элементам статически вложенного перечисления Thread.State: NEW – поток создан, но еще не запущен; RUNNABLE – поток выполняется; BLOCKED – поток блокирован (ожидает входа в синхронизированный блок/метод); WAITING – поток ждет окончания работы другого потока; TIMED_WAITING – поток некоторое время ждет окончания другого потока; TERMINATED — поток завершен. Получить значение состояния потока можно вызовом метода getState().

Слайд 8





Остановка потока
В Java НЕТ средств для принудительной остановки потока. (кроме deprecated метода stop()).
В Java принят уведомительный порядок остановки потока:
либо при помощи существующих механизмов;
либо созданных вручную.
Метод interrupt() класса Thread выставляет некоторый флаг.
Состояние этого флага можно проверить с помощью метода isInterrupted(). 
Статический метод interrupted() производит проверку для текущего потока и сбрасывает флаг.
Если у потока были вызваны методы sleep() или wait() - ожидание прервется и будет выброшено исключение InterruptedException. Флаг в этом случае не выставляется.
Описание слайда:
Остановка потока В Java НЕТ средств для принудительной остановки потока. (кроме deprecated метода stop()). В Java принят уведомительный порядок остановки потока: либо при помощи существующих механизмов; либо созданных вручную. Метод interrupt() класса Thread выставляет некоторый флаг. Состояние этого флага можно проверить с помощью метода isInterrupted(). Статический метод interrupted() производит проверку для текущего потока и сбрасывает флаг. Если у потока были вызваны методы sleep() или wait() - ожидание прервется и будет выброшено исключение InterruptedException. Флаг в этом случае не выставляется.

Слайд 9





Приостановка потока
Методы класса Thread:
унарные
sleep(t) – приостановить (задержать) выполнение потока на t миллисекунд. 
yield() – может сделать некоторую паузу и позволить другим потокам начать выполнение своей задачи. 
для синхронизации с другими потоками
join() блокирует работу потока, в котором он вызван, до тех пор, пока не будет закончено выполнение вызывающего метод потока.
wait(t) – помещает поток в состояние ожидания на время t
wait() – помещает поток в состояние ожидания пока другой поток не вызовет notify() или notifyAll() для ожидающего объекта
Описание слайда:
Приостановка потока Методы класса Thread: унарные sleep(t) – приостановить (задержать) выполнение потока на t миллисекунд. yield() – может сделать некоторую паузу и позволить другим потокам начать выполнение своей задачи. для синхронизации с другими потоками join() блокирует работу потока, в котором он вызван, до тех пор, пока не будет закончено выполнение вызывающего метод потока. wait(t) – помещает поток в состояние ожидания на время t wait() – помещает поток в состояние ожидания пока другой поток не вызовет notify() или notifyAll() для ожидающего объекта

Слайд 10





Совместное 
использование ресурсов
В условиях многозадачности есть сразу несколько потоков, которые стремятся получить доступ к одному и тому же ограниченному ресурсу. 
Поэтому фактически все многопоточные схемы синхронизируют доступ к разделяемым ресурсам. 
Доступ к разделяемому ресурсу в один момент времени может получить только один поток. 
В Java есть встроенная поддержка для предотвращения конфликтов в виде ключевого слова synchronized. 
Синхронизации не требуют только атомарные процессы по записи/чтению, не превышающие по объему 32 бит.
Описание слайда:
Совместное использование ресурсов В условиях многозадачности есть сразу несколько потоков, которые стремятся получить доступ к одному и тому же ограниченному ресурсу. Поэтому фактически все многопоточные схемы синхронизируют доступ к разделяемым ресурсам. Доступ к разделяемому ресурсу в один момент времени может получить только один поток. В Java есть встроенная поддержка для предотвращения конфликтов в виде ключевого слова synchronized. Синхронизации не требуют только атомарные процессы по записи/чтению, не превышающие по объему 32 бит.

Слайд 11





Атомарные операции 
Атомарная операция – это операция, которую не может прервать планировщик потоков 
Ключевое слово volatile обеспечивает видимость в рамках приложения. 
Если поле объявлено как volatile, это означает, что сразу же после записи в поле изменение будет отражено во всех последующих операциях чтения. 
В Java SE5 появились специальные классы для выполнения атомарных операций с переменными.
Описание слайда:
Атомарные операции Атомарная операция – это операция, которую не может прервать планировщик потоков Ключевое слово volatile обеспечивает видимость в рамках приложения. Если поле объявлено как volatile, это означает, что сразу же после записи в поле изменение будет отражено во всех последующих операциях чтения. В Java SE5 появились специальные классы для выполнения атомарных операций с переменными.

Слайд 12





Методы synchronized
Синхронизированный метод изолирует объект, после чего объект становится недоступным для других потоков. 
Изоляция снимается: 
когда поток полностью выполнит соответствующий метод 
если есть вызов метода wait() из изолированного метода
Описание слайда:
Методы synchronized Синхронизированный метод изолирует объект, после чего объект становится недоступным для других потоков. Изоляция снимается: когда поток полностью выполнит соответствующий метод если есть вызов метода wait() из изолированного метода

Слайд 13





Блоки synchronized
Синхронизировать объект можно при помощи синхронизированного блока кода. 
В этом случае происходит блокировка объекта, указанного в инструкции synchronized, и он становится недоступным для других синхронизированных методов и блоков.
Описание слайда:
Блоки synchronized Синхронизировать объект можно при помощи синхронизированного блока кода. В этом случае происходит блокировка объекта, указанного в инструкции synchronized, и он становится недоступным для других синхронизированных методов и блоков.

Слайд 14





Мониторы
то, что обеспечивает работу synchronized-методов и synchronized-блоков  
это средство обеспечения контроля за доступом к ресурсу 
У монитора может быть максимум один владелец в каждый текущий момент времени. 
В Java у каждого экземпляра объекта есть монитор. 
Используется монитор так: 
любой нестатический synchronized-метод при своем вызове прежде всего пытается захватить монитор того объекта, у которого он вызван 
(на который он может сослаться как на this). 
Если это удалось – метод исполняется. 
Если нет – поток останавливается и ждет, пока монитор будет отпущен.
Описание слайда:
Мониторы то, что обеспечивает работу synchronized-методов и synchronized-блоков это средство обеспечения контроля за доступом к ресурсу У монитора может быть максимум один владелец в каждый текущий момент времени. В Java у каждого экземпляра объекта есть монитор. Используется монитор так: любой нестатический synchronized-метод при своем вызове прежде всего пытается захватить монитор того объекта, у которого он вызван (на который он может сослаться как на this). Если это удалось – метод исполняется. Если нет – поток останавливается и ждет, пока монитор будет отпущен.

Слайд 15





Статические методы
У статического метода нет ссылки this. 
При синхронизации статического метода блокируется монитор соответствующего объекта класса Class.
Объекты класса Class существуют в единственном экземпляре только в пределах одного ClassLoader-а. 
Резюме: Если два нестатических метода объявлены как synchronized, то в каждый момент времени из разных потоков на одном объекте может быть вызван только один из них. Поток, который вызывает метод первым, захватит монитор, и второму потоку придется ждать.
Описание слайда:
Статические методы У статического метода нет ссылки this. При синхронизации статического метода блокируется монитор соответствующего объекта класса Class. Объекты класса Class существуют в единственном экземпляре только в пределах одного ClassLoader-а. Резюме: Если два нестатических метода объявлены как synchronized, то в каждый момент времени из разных потоков на одном объекте может быть вызван только один из них. Поток, который вызывает метод первым, захватит монитор, и второму потоку придется ждать.

Слайд 16





Взаимные блокировки
deadlock
Предположим, что один поток уже захватил монитор на некотором объекте x и для продолжения работы ему нужно захватить монитор на объекте y. 
Другой поток уже захватил монитор на объекте y и ему нужен монитор объекта x. 
В результате оба потока будут ждать, пока нужный монитор освободится.
Описание слайда:
Взаимные блокировки deadlock Предположим, что один поток уже захватил монитор на некотором объекте x и для продолжения работы ему нужно захватить монитор на объекте y. Другой поток уже захватил монитор на объекте y и ему нужен монитор объекта x. В результате оба потока будут ждать, пока нужный монитор освободится.



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