🗊 Презентация Расширенные возможности многопоточного программирования. Лекция 1

Нажмите для полного просмотра!
Расширенные возможности многопоточного программирования. Лекция 1, слайд №1 Расширенные возможности многопоточного программирования. Лекция 1, слайд №2 Расширенные возможности многопоточного программирования. Лекция 1, слайд №3 Расширенные возможности многопоточного программирования. Лекция 1, слайд №4 Расширенные возможности многопоточного программирования. Лекция 1, слайд №5 Расширенные возможности многопоточного программирования. Лекция 1, слайд №6 Расширенные возможности многопоточного программирования. Лекция 1, слайд №7 Расширенные возможности многопоточного программирования. Лекция 1, слайд №8 Расширенные возможности многопоточного программирования. Лекция 1, слайд №9 Расширенные возможности многопоточного программирования. Лекция 1, слайд №10 Расширенные возможности многопоточного программирования. Лекция 1, слайд №11 Расширенные возможности многопоточного программирования. Лекция 1, слайд №12 Расширенные возможности многопоточного программирования. Лекция 1, слайд №13 Расширенные возможности многопоточного программирования. Лекция 1, слайд №14 Расширенные возможности многопоточного программирования. Лекция 1, слайд №15 Расширенные возможности многопоточного программирования. Лекция 1, слайд №16 Расширенные возможности многопоточного программирования. Лекция 1, слайд №17 Расширенные возможности многопоточного программирования. Лекция 1, слайд №18 Расширенные возможности многопоточного программирования. Лекция 1, слайд №19 Расширенные возможности многопоточного программирования. Лекция 1, слайд №20 Расширенные возможности многопоточного программирования. Лекция 1, слайд №21 Расширенные возможности многопоточного программирования. Лекция 1, слайд №22 Расширенные возможности многопоточного программирования. Лекция 1, слайд №23

Содержание

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

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


Слайд 1


Лекция 1 Расширенные возможности многопоточного программирования
Описание слайда:
Лекция 1 Расширенные возможности многопоточного программирования

Слайд 2


Высокоуровневые средства многопоточного программирования Объекты блокировки (Locks) Исполнители (Executors) Коллекции (Concurrent collections)...
Описание слайда:
Высокоуровневые средства многопоточного программирования Объекты блокировки (Locks) Исполнители (Executors) Коллекции (Concurrent collections) Атомарные переменные (Atomic variables) С версии 1.5 Пакет java.util.concurrent

Слайд 3


Reentrant lock public void lock() public boolean tryLock() public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException public...
Описание слайда:
Reentrant lock public void lock() public boolean tryLock() public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException public void lockInterruptibly() throws InterruptedException public void unlock() public int getHoldCount() public boolean isHeldByCurrentThread()

Слайд 4


public class Safelock { public class Safelock { static class Friend { private final String name; private final Lock lock = new ReentrantLock();...
Описание слайда:
public class Safelock { public class Safelock { static class Friend { private final String name; private final Lock lock = new ReentrantLock(); public Friend(String name) { this.name = name; } public String getName() { return this.name; } public boolean impendingBow(Friend bower) { Boolean myLock = false; Boolean yourLock = false; try { myLock = lock.tryLock(); yourLock = bower.lock.tryLock(); } finally { if (! (myLock && yourLock)) { if (myLock) { lock.unlock(); } if (yourLock) { bower.lock.unlock(); } } } return myLock && yourLock; }

Слайд 5


public void bow(Friend bower) { public void bow(Friend bower) { if (impendingBow(bower)) { try { System.out.format("%s: %s has bowed to...
Описание слайда:
public void bow(Friend bower) { public void bow(Friend bower) { if (impendingBow(bower)) { try { System.out.format("%s: %s has bowed to me!%n", this.name, bower.getName()); bower.bowBack(this); } finally { lock.unlock(); bower.lock.unlock(); } } else { System.out.format("%s: %s started to bow to me, but" + " saw that I was already bowing to him.%n", this.name, bower.getName()); } } public void bowBack(Friend bower) { System.out.format("%s: %s has bowed back to me!%n", this.name, bower.getName()); } }

Слайд 6


static class BowLoop implements Runnable { private Friend bower; private Friend bowee; public BowLoop(Friend bower, Friend bowee) { this.bower =...
Описание слайда:
static class BowLoop implements Runnable { private Friend bower; private Friend bowee; public BowLoop(Friend bower, Friend bowee) { this.bower = bower; this.bowee = bowee; } public void run() { Random random = new Random(); for (;;) { try { Thread.sleep(random.nextInt(10)); } catch (InterruptedException e) {} bowee.bow(bower); } } } public static void main(String[] args) { final Friend alphonse = new Friend("Alphonse"); final Friend gaston = new Friend("Gaston"); new Thread(new BowLoop(alphonse, gaston)).start(); new Thread(new BowLoop(gaston, alphonse)).start(); } }

Слайд 7


Затвор CountDownLatch – класс, позволяющий потокам ожидать окончания операций, выполняемые другими потоками. Счетчик задается в конструкторе....
Описание слайда:
Затвор CountDownLatch – класс, позволяющий потокам ожидать окончания операций, выполняемые другими потоками. Счетчик задается в конструкторе. countDown() – уменьшает счетчик на 1. await() – блокирует поток, пока счетчик не 0.

Слайд 8


Барьер CyclicBarrier – барьер. Потоки «подходят» к барьеру и ожидают последнего (количество задается в конструкторе) await() – блокирует поток до...
Описание слайда:
Барьер CyclicBarrier – барьер. Потоки «подходят» к барьеру и ожидают последнего (количество задается в конструкторе) await() – блокирует поток до наступления одного из событий: подошел последний поток Текущий поток был прерван Один из ожидающих у барьера потоков был прерван Один из ожидающий у барьера потоков закончил ожидать по таймауту Кто-то вызвал метод reset() у барьера

Слайд 9


Семафор Semaphore позволяет ограничить доступ к ресурсу до нескольких потоков. Конструктор Semaphore(int permits) acquire() release() tryAcquire()
Описание слайда:
Семафор Semaphore позволяет ограничить доступ к ресурсу до нескольких потоков. Конструктор Semaphore(int permits) acquire() release() tryAcquire()

Слайд 10


ReadWriteLock ReadWriteLock позволяет синхронизовать потоки, желающие получить доступ на чтение или на запись. Методы ReadWriteLock: Lock readLock()...
Описание слайда:
ReadWriteLock ReadWriteLock позволяет синхронизовать потоки, желающие получить доступ на чтение или на запись. Методы ReadWriteLock: Lock readLock() Lock writeLock() Механизм представлен в виде класса ReentrantReadWriteLock

Слайд 11


Исполнители Интерфейс Executor new Thread(r)).start(); Заменяется на: e.execute(r); Интерфейс ExecutorService execute(Runnable r) и Future...
Описание слайда:
Исполнители Интерфейс Executor new Thread(r)).start(); Заменяется на: e.execute(r); Интерфейс ExecutorService execute(Runnable r) и Future Submit(Callable c) Интерфейс ScheduledExecutorService Позволяет выполнять задачи с определенной задержкой

Слайд 12


Runnable и Callable Runnable – выполяемая задача Callable – выполняемая задача, имеющая результат. public class Factorial implements Callable {...
Описание слайда:
Runnable и Callable Runnable – выполяемая задача Callable – выполняемая задача, имеющая результат. public class Factorial implements Callable { public Factorial(int n) { this.n = n; } public Long call() { int res = 1; for (int i = 1; i < n; i++) res *= n; return n; } }

Слайд 13


Класс Future Метод Future submit(Callable c) интерфейса ExecutorService возвращает объект Future. Методы Future: boolean isDone() V get() throws...
Описание слайда:
Класс Future Метод Future submit(Callable c) интерфейса ExecutorService возвращает объект Future. Методы Future: boolean isDone() V get() throws InterruptedException, ExecutionException V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException boolean cancel(boolean mayInterruptIfRunning) boolean isCancelled()

Слайд 14


Пулы потоков Пулы потоков предназначены для параллельного выполнения задач Runnable и Callable. Класс Executors предоставляет: public static...
Описание слайда:
Пулы потоков Пулы потоков предназначены для параллельного выполнения задач Runnable и Callable. Класс Executors предоставляет: public static ExecutorService newSingleThreadExecutor() public static ExecutorService newFixedThreadPool(int nThreads) public static ExecutorService newCachedThreadPool()

Слайд 15


Интерфейс BlockingQueue boolean add(E e) boolean remove(Object o) boolean offer(E e) boolean offer(E e, long timeout, TimeUnit unit) throws...
Описание слайда:
Интерфейс BlockingQueue boolean add(E e) boolean remove(Object o) boolean offer(E e) boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException void put(E e) throws InterruptedException E take() throws InterruptedException E poll(long timeout, TimeUnit unit) throws InterruptedException E element() E peek()

Слайд 16


Сводка по методам
Описание слайда:
Сводка по методам

Слайд 17


Коллекции Интерфейс BlockingQueue имеет реализации: ArrayBlockingQueue DelayQueue LinkedBlockingQueue PriorityBlockingQueue SynchronousQueue...
Описание слайда:
Коллекции Интерфейс BlockingQueue имеет реализации: ArrayBlockingQueue DelayQueue LinkedBlockingQueue PriorityBlockingQueue SynchronousQueue LinkedBlockingDeque

Слайд 18


Атомарные операции Данный класс не приспособлен для использования из разных потоков class Counter { private int c = 0; public void increment() { c++;...
Описание слайда:
Атомарные операции Данный класс не приспособлен для использования из разных потоков class Counter { private int c = 0; public void increment() { c++; } public void decrement() { c--; } public int value() { return c; } }

Слайд 19


Атомарные операции Атомарными операциями являются: Чтение и запись ссылок на объекты Чтение и запись значений переменных примитивных типов (за...
Описание слайда:
Атомарные операции Атомарными операциями являются: Чтение и запись ссылок на объекты Чтение и запись значений переменных примитивных типов (за исключением long и double) Чтение и запись значение переменных любых типов, объявленных как volatile

Слайд 20


Атомарные операции Объекты данного класса может использоваться из разных потоков, но не эффективно. class SynchronizedCounter { private int c = 0;...
Описание слайда:
Атомарные операции Объекты данного класса может использоваться из разных потоков, но не эффективно. class SynchronizedCounter { private int c = 0; public synchronized void increment() { c++; } public synchronized void decrement() { c--; } public synchronized int value() { return c; } }

Слайд 21


Атомарные переменные class AtomicCounter { private AtomicInteger c = new AtomicInteger(0); public void increment() { c.incrementAndGet(); } public...
Описание слайда:
Атомарные переменные class AtomicCounter { private AtomicInteger c = new AtomicInteger(0); public void increment() { c.incrementAndGet(); } public void decrement() { c.decrementAndGet(); } public int value() { return c.get(); } }

Слайд 22


Классы атомарных переменных AtomicBoolean AtomicInteger AtomicLong AtomicReference AtomicIntegerArray AtomicLongArray AtomicReferenceArray
Описание слайда:
Классы атомарных переменных AtomicBoolean AtomicInteger AtomicLong AtomicReference AtomicIntegerArray AtomicLongArray AtomicReferenceArray

Слайд 23


Методы классов атомарных переменных get() set(value) getAndSet(value) compareAndSet(expect, newValue) Для чисел: addAndGet(delta) getAndAdd(delta)...
Описание слайда:
Методы классов атомарных переменных get() set(value) getAndSet(value) compareAndSet(expect, newValue) Для чисел: addAndGet(delta) getAndAdd(delta) getAndDecrement() getAndIncrement() incrementAndGet() decrementAndGet()



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