Программирование
<<  Эффективное программирование на Java Разработка многопоточных приложений на  >>
Картинок нет
Картинки из презентации «Многопоточное программирование на Java» к уроку информатики на тему «Программирование»

Автор: Geo. Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока информатики, скачайте бесплатно презентацию «Многопоточное программирование на Java.ppt» со всеми картинками в zip-архиве размером 352 КБ.

Многопоточное программирование на Java

содержание презентации «Многопоточное программирование на Java.ppt»
Сл Текст Сл Текст
1Java Advanced. Многопоточное 22Производитель-потребитель (2).
программирование на Java. Установка значения public synchronized
2Содержание. Потоки Блокировки void set(Object data) throws
(синхронизация) Мониторы и условия Модель InterruptedException { while (data !=
памяти Java Примеры Заключение. Java null) wait(); this.data = data; notify();
Advanced / Многопоточное программирование. }. Java Advanced / Многопоточное
Средства языка Java. программирование на Java.
3Потоки. Часть 1. 23Производитель-потребитель (3).
4Создание потоков. Класс Thread – поток Получение значения public synchronized
Позволяет создавать потоки и производить Object get() throws InterruptedException {
операции с ними Интерфейс Runnable – while (data == null) wait(); Object d =
сущность, которая может быть запущена data; data = null; notify(); return d; }.
public void run(); Java Advanced / Java Advanced / Многопоточное
Многопоточное программирование на Java. программирование на Java.
5Создание потока (Runnable). Пример 24Модель памяти Java. Часть 3.
кода // Создание потока Thread t = new 25Основные свойства. Атомарность
Thread(new Runnable() { public void run() Видимость Упорядоченность. Java Advanced /
{ System.out.println("Hello"); } Многопоточное программирование на Java.
}); // Запуск потока t.start(); Java 26Атомарность. Атомарная операция
Advanced / Многопоточное программирование выполняется как единое целое Операции над
на Java. всеми типами кроме long и double являются
6Создание потока (Thread). Не атомарными. Java Advanced / Многопоточное
рекомендуется использовать Пример кода // программирование на Java.
Создание потока Thread t = new Thread() { 27Пример. int a = 0; long b = 0; a = 1;
public void run() { b = -1; Возможные значения a 0 1 Возможные
System.out.println("Hello"); } значения b 0 -1 0xffffffff00000000
}; // Запуск потока t.start(); Java 0x00000000ffffffff … Java Advanced /
Advanced / Многопоточное программирование Многопоточное программирование на Java.
на Java. 28Видимость. Изменения произведенные
7Состояния потока. Состояние потока потоком 1 видимы потоком 2 Видимость
возвращается методами int getState() и гарантируется в следующих случаях После
boolean isAlive() класса Thread. изменений поток 1 освободил блокировку,
getState(). isAlive(). NEW. RUNNABLE. +. которую захватил поток 2 После изменения
BLOCKED. +. WAITING. +. TIMED_WAITING. +. поток 1 создал поток 2 Поток 2 дождался
TERMINATED. Java Advanced / Многопоточное окончания потока 1 При неправильной
программирование на Java. синхронизации изменения могут быть видимы
8Свойства потока. Основные свойства id в произвольном порядке. Java Advanced /
– идентификатор потока name – имя потока Многопоточное программирование на Java.
priority – приоритет daemon – поток-демон 29Пример. int a = 0; int b = 0; a = 1; b
Свойства потока не могут изменяться после = 2; Возможные значения пары а, b 0, 0 1,
запуска. Java Advanced / Многопоточное 0 1, 2 0, 2. Java Advanced / Многопоточное
программирование на Java. программирование на Java.
9Взаимодействие потоков. Создание 30Упорядоченность. Программы выполняются
потока (create) Запуск потока (start) как если бы они были написаны
Ожидание окончания потока (join) последовательно С точки зрения других
Прерывание потока (interrupt). Java потоков выполнение программы может
Advanced / Многопоточное программирование производиться в произвольном порядке. Java
на Java. Advanced / Многопоточное программирование
10Ожидание окончания потока. Методы на Java.
класса Thread join() – ожидать до 31Пример. int a = 0; a = 1; a = 2;
завершения join(long millis) – ожидать до Возможные последовательности значений а 0,
завершения или истечения millis 0 0, 1 0, 2 1, 2 2, 0 2, 1 … Java Advanced
миллисекунд join(long millis, long nanos) / Многопоточное программирование на Java.
– ожидать до завершения или истечения 32Volatile-переменные. Операции с
millis миллисекунд и nanos миллисекунд Все volatile-переменными всегда атомарны При
методы ожидания кидают чтение значения volatile-переменной оно
InterruptedExcepton. Java Advanced / всегда читается из общей памяти При записи
Многопоточное программирование на Java. значения volatile-переменной оно всегда
11Прерывание потока. Методы класса записывается в общую память Если
Thread interrupt() – установить флаг volatile-ссылка изменилась, то данные
прерывания isInterrupted() – проверить доступные по ней могли не измениться. Java
флаг прерывания interrupted() – проверить Advanced / Многопоточное программирование
и сбросить флаг прерывания Методы, которые на Java.
ожидают в процессе выполнения должны 33Пример 1. volatile List l = null; t1()
бросать InterruptedException. Java { List l = new ArrayList(); l.add(new
Advanced / Многопоточное программирование Object()); this.l = l; }. Object t2() {
на Java. while (l != null) { return l.get(0); } }.
12Дополнительные методы. Приостановка Java Advanced / Многопоточное
выполнения sleep(time) – приостановить программирование на Java.
поток на время yield() – позволить 34Пример 2. public class Singleton {
выполниться другим потокам Получение public static volatile Singleton instance;
текущего потока currentThread(). Java public Singleton getInstance() { if
Advanced / Многопоточное программирование (instance == null) { synchronized
на Java. (Singleton.class) { if (instance == null)
13Блокировки (синхронизация). Часть 2. { instance = new Singleton(); } } } return
14Общий случай. Любой объект может instance; } }. Java Advanced /
служить блокировкой Снятие блокировки Многопоточное программирование на Java.
производится автоматически Синтаксис 35Выводы. При отсутствии правильной
synchronized (o) { // Получение блокировки синхронизации потоки могут увидеть
… } // Снятие блокировки. Java Advanced / практически что угодно. Java Advanced /
Многопоточное программирование на Java. Многопоточное программирование на Java.
15Методы экземпляра. Метод экземпляра 36Примеры. Часть 4.
может быть объявлен синхронизованным 37Барьер. public await(Barrier that) {
public synchronized int getValue() { … } // 0 synchronized (this) { // 1
Эквивалентно public int getValue() { this.generation++; // 2 this.notify(); //
synchronized (this) { … } }. Java Advanced 3 } // 4 synchronized (that) { // 5 while
/ Многопоточное программирование на Java. (this.generation != that.generation) { //
16Производитель-потребитель (1). Класс 6 that.wait(); // unlock 7, await 8, lock
данных class Data { private Object data; 9 } // 10 } // 11 }. Java Advanced /
public void set(Object data) { … } public Многопоточное программирование на Java.
Object get() { … } }. Java Advanced / 38Диаграмма переходов для барьера. Java
Многопоточное программирование на Java. Advanced / Многопоточное программирование
17Производитель-потребитель (2). на Java.
Установка значения public void set(Object 39Гарантированный deadlock. public void
data) { while (true) { synchronized (this) run() { // 0 synchronized (o1) { // 1
{ if (data == null) { this.data = data; o1.notifyAll(); // 2 synchronized (o2) {
break; } } } }. Java Advanced / // 3 try { o2.wait(); // unlock 4, await
Многопоточное программирование на Java. 5, lock 6 } catch (InterruptedException e)
18Производитель-потребитель (3). {} } // 7 } // 8 }. Java Advanced /
Получение значения public Object get() { Многопоточное программирование на Java.
while (true) { synchronized (this) { if 40Диаграмма переходов для deadlock. Java
(data != null) { Object d = data; data = Advanced / Многопоточное программирование
null; return d; } } } }. Java Advanced / на Java.
Многопоточное программирование на Java. 41Заключение. Часть 6.
19Мониторы (условия). Часть 3. 42Выводы. Программы должны быть хорошо
20Монитор. Любой объект может быть синхронизированы Недосинхронизированные
монитором Для взаимодействия с монитором программы могут вести себя практически как
поток должен иметь блокировку на него угодно Пересенхронизированные программы
Методы монитора wait(time?) – ожидание часто страдают deadlock’ами. Java Advanced
монитора notify() – извещение одного из / Многопоточное программирование на Java.
ждущих потоков notifyAll() – извещение 43Ссылки. JLS. Threads and Locks //
всех ждущих потоков. Java Advanced / http://java.sun.com/docs/books/jls/third_e
Многопоточное программирование на Java. ition/html/memory.html Threads: Doing Two
21Мониторы и блокировки. При ожидании or More Tasks At Once (Java Tutorial) //
монитора блокировка с него снимается При http://java.sun.com/docs/books/tutorial/es
извещении поток не получает управления ential/threads/index.html. Java Advanced /
пока не может получить блокировку обратно Многопоточное программирование на Java.
Псевдокод monitor.unlock() monitor.await() 44Вопросы. Java Advanced / Многопоточное
monitor.lock(). Java Advanced / программирование. Средства языка Java.
Многопоточное программирование на Java.
Многопоточное программирование на Java.ppt
http://900igr.net/kartinka/informatika/mnogopotochnoe-programmirovanie-na-java-232853.html
cсылка на страницу

Многопоточное программирование на Java

другие презентации на тему «Многопоточное программирование на Java»

«История развития языков программирования» - Языки программирования высокого уровня. Правая часть метаформулы может содержать правило построения допустимых последовательностей. Основные понятия. Наиболее распространенные типы величин - числовые (целые и вещественные), символьные, логические. История развития языков высокого уровня. Фундаментальных понятия языка.

«Языки программирования» - Проблемно-ориентированные расширения существующих языков. Семантический анализатор. «Подсветка» ошибок. Транслятор. Навигация по коду. Графический язык программирования. Диаграмма состояний. Виды проблемно-ориентированных языков. Недостатки средства UniMod. Независимый автоматный язык. Генерация диаграмм.

«Курсы программирования» - Коллаж, способы создания коллажа. Редактирование фонового слоя. Создание открыток. Использование различных эффектов. Занимательное программирование. Работа с текстом в Photoshop (ввод, редактирование форматирование символов и абзацев). Понятие слоя. Создание многослойного изображения. Создание и организация дружественного пользовательского интерфейса.

«Язык программирования Паскаль» - назван в честь английского ученого Блеза Паскаля. Алгоритмический язык Паскаль. Язык программирования Паскаль. Блез Паскаль (1623 – 1662). ЯП Паскаль выбран как наиболее удовлетворяющий целям обучения: Обучает хорошему стилю программирования, воспитывает дисциплину структурного программирования. Гибок и развит в отношении типов данных.

«Объектно-ориентированное программирование» - Класс и Объект Класс - принципиально новый тип данных. Этапы разработки программ с использованием ООП. Абстрагирование Выделение абстракций. Объект является представителем (экземпляром) какого-либо класса. Предпосылки и история. Отдел 2. Успешные проекты не часты (30000 проектов). Рост сложности программ.

«Линейное программирование» - В окне Надстройки установить флажок и нажать ОК. Третье ограничение. Первое ограничение. Впервые симплексный метод был предложен американским ученым Дж. 2. Введем формулу вычисления значений целевой функции Например, в ячейку А8. В MS Excel 2007 кнопка Поиск решения появится во вкладке Данные. Результаты.

Программирование

31 презентация о программировании
Урок

Информатика

130 тем
Картинки
900igr.net > Презентации по информатике > Программирование > Многопоточное программирование на Java