Java Advanced Concurrency Utilities 1 l void run

  • Slides: 42
Download presentation
Java Advanced Concurrency Utilities

Java Advanced Concurrency Utilities

Производитель-потребитель (1) l Производитель void run() { try { while (true) { E e;

Производитель-потребитель (1) l Производитель void run() { try { while (true) { E e; // Создание элемента queue. put(e); } } catch (Interrupted. Exception e) { } } Georgiy Korneev Java Advanced / Collections Framework 7

Производитель-потребитель (2) l Потребитель void run() { try { while (true) { E e

Производитель-потребитель (2) l Потребитель void run() { try { while (true) { E e = queue. take(); // Обработка элемента } } catch (Interrupted. Exception e) { } } Georgiy Korneev Java Advanced / Collections Framework 8

Реализации Blocking. Queue Array. Blocking. Queue – очередь на массиве l Linked. Blocking. Queue

Реализации Blocking. Queue Array. Blocking. Queue – очередь на массиве l Linked. Blocking. Queue – очередь на списке l Priority. Blocking. Queue – очередь на хипе l Synchronous. Queue – очередь без "внутренности" l Georgiy Korneev Java Advanced / Collections Framework 9

Атомарные операции l Общие операции get() – атомарное чтение l set(value) – атомарная запись

Атомарные операции l Общие операции get() – атомарное чтение l set(value) – атомарная запись l compare. And. Set(expected, value) – сравнение и запись l weak. Compare. And. Set(expected, value) – слабое сравнение и запись l l Операции над числами add. And. Get() / get. And. Add() l get. And. Increment() / increment. And. Get() l get. And. Decrement() / decrement. And. Get() l Georgiy Korneev Java Advanced / Collections Framework 13

Атомарные переменные l Типы Atomic. Boolean l Atomic. Integer l Atomic. Long l Atomic.

Атомарные переменные l Типы Atomic. Boolean l Atomic. Integer l Atomic. Long l Atomic. Reference l l Операции l Обычные Georgiy Korneev Java Advanced / Collections Framework 14

Атомарные массивы l Типы Atomic. Integer. Array l Atomic. Long. Array l Atomic. Reference.

Атомарные массивы l Типы Atomic. Integer. Array l Atomic. Long. Array l Atomic. Reference. Array l l Операции l Обычные, с указанием индекса Georgiy Korneev Java Advanced / Collections Framework 15

Атомарный доступ к полям l Типы Atomic. Integer. Field. Updater l Atomic. Long. Field.

Атомарный доступ к полям l Типы Atomic. Integer. Field. Updater l Atomic. Long. Field. Updater l Atomic. Reference. Field. Updater l l Операции Обычные, с указанием объекта l Создание new. Updater(class, field. Name) l Georgiy Korneev Java Advanced / Collections Framework 16

Помеченные ссылки l Типы Atomic. Markable. Reference – ссылка помеченная флажком l Atomic. Stamped.

Помеченные ссылки l Типы Atomic. Markable. Reference – ссылка помеченная флажком l Atomic. Stamped. Reference – ссылка помеченная числом l Georgiy Korneev Java Advanced / Collections Framework 17

Примитивы синхронизации Semaphore – семафор l Cyclic. Barrier – многоразовый барьер l Count. Down.

Примитивы синхронизации Semaphore – семафор l Cyclic. Barrier – многоразовый барьер l Count. Down. Latch – защелка l Exchanger – рандеву l Georgiy Korneev Java Advanced / Collections Framework 20

Условия l Интерфейс Condition l l l await(time? ) – ждать условия await. Until(deadline)

Условия l Интерфейс Condition l l l await(time? ) – ждать условия await. Until(deadline) – ждать условия до времени await. Uninterruptibly() – ждать условие signal() – подать сигнал signal. All() – подать сигнал всем Georgiy Korneev Java Advanced / Collections Framework 27

Реализация блокировки Класс Reentrant. Lock l Дополнительные методы l is. Fair() – “честность” блокировки

Реализация блокировки Класс Reentrant. Lock l Дополнительные методы l is. Fair() – “честность” блокировки l is. Locked() – блокировка занята l get. Queued. Threads() / get. Queue. Length() / has. Queued. Thread(thread) / has. Queued. Threads() – потоки, ждущие блокировку l get. Waiting. Threads(condition) / get. Wait. Queue. Length(condition) – потоки, ждущие условие l Georgiy Korneev Java Advanced / Collections Framework 28

Читатели и писатели Интерфейс Read. Write. Lock l Методы l read. Lock() – блокировка

Читатели и писатели Интерфейс Read. Write. Lock l Методы l read. Lock() – блокировка для читателей l write. Lock() – блокировка для писателей l l Реализация Reentrant. Read. Write. Lock Georgiy Korneev Java Advanced / Collections Framework 29

Исполнители l Интерфейс Executor l l execute(Runnable) – выполнить задание Интерфейс Executor. Service submit(Runnable)

Исполнители l Интерфейс Executor l l execute(Runnable) – выполнить задание Интерфейс Executor. Service submit(Runnable) – выполнить задание l Future<V> submit(Callable<V>) – выполнить функцию l invoke. All(List<Callable>) – выполнить все функции l invoke. Any(List<Callable>) – успешно выполнить функцию l Georgiy Korneev Java Advanced / Collections Framework 31

Отложенное исполнение l Интерфейс Scheduled. Executor. Service l l l schedule(callable, timeout) – исполнить

Отложенное исполнение l Интерфейс Scheduled. Executor. Service l l l schedule(callable, timeout) – исполнить через timeout schedule(runnable, timeout? ) – исполнить через timeout shedule. At. Fixed. Rate(runnable, initial. Delay, period, unit) – периодическое исполнение schedule. With. Fixed. Delay(runnable, initial. Delay, delay, unit) – исполнение с равными интервалами Все методы возвращают Scheduled. Future Georgiy Korneev Java Advanced / Collections Framework 34

Реализация отложенного исполнения l Класс Scheduled. Thread. Pool. Executor Georgiy Korneev Java Advanced /

Реализация отложенного исполнения l Класс Scheduled. Thread. Pool. Executor Georgiy Korneev Java Advanced / Collections Framework 35

Интервалы времени l Перечисление Time. Unit SECONDS l MILLISECONDS l MICROSECONDS l NANOSECONDS l

Интервалы времени l Перечисление Time. Unit SECONDS l MILLISECONDS l MICROSECONDS l NANOSECONDS l l Интервалы задаются парой Значение l Единица измерения l Georgiy Korneev Java Advanced / Collections Framework 38

Очереди с задержкой Класс Delay. Queue l Интерфейс Delayed l l get. Delay(unit) –

Очереди с задержкой Класс Delay. Queue l Интерфейс Delayed l l get. Delay(unit) – получить остаток задержки Georgiy Korneev Java Advanced / Collections Framework 39

Ссылки JSR 166: Concurrency Utilities // http: //jcp. org/en/jsr/detail? id=166 l Concurrent Programming with

Ссылки JSR 166: Concurrency Utilities // http: //jcp. org/en/jsr/detail? id=166 l Concurrent Programming with J 2 SE 5. 0 // http: //java. sun. com/developer/technical. Article s/J 2 SE/concurrency/ l Getting to know synchronizers http: //java. sun. com/developer/JDCTech. Tips/ 2005/tt 0216. html#1 l Georgiy Korneev Java Advanced / Collections Framework 41

Вопросы Georgiy Korneev Java Advanced / Collections Framework 42

Вопросы Georgiy Korneev Java Advanced / Collections Framework 42