Содержание
- 2. Высокоуровневые средства многопоточного программирования Объекты блокировки (Locks) Исполнители (Executors) Коллекции (Concurrent collections) Атомарные переменные (Atomic variables)
- 3. Reentrant lock public void lock() public boolean tryLock() public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException
- 4. public class Safelock { static class Friend { private final String name; private final Lock lock
- 5. public void bow(Friend bower) { if (impendingBow(bower)) { try { System.out.format("%s: %s has bowed to me!%n",
- 6. static class BowLoop implements Runnable { private Friend bower; private Friend bowee; public BowLoop(Friend bower, Friend
- 7. Затвор CountDownLatch – класс, позволяющий потокам ожидать окончания операций, выполняемые другими потоками. Счетчик задается в конструкторе.
- 8. Барьер CyclicBarrier – барьер. Потоки «подходят» к барьеру и ожидают последнего (количество задается в конструкторе) await()
- 9. Семафор Semaphore позволяет ограничить доступ к ресурсу до нескольких потоков. Конструктор Semaphore(int permits) acquire() release() tryAcquire()
- 10. ReadWriteLock ReadWriteLock позволяет синхронизовать потоки, желающие получить доступ на чтение или на запись. Методы ReadWriteLock: Lock
- 11. Исполнители Интерфейс Executor new Thread(r)).start(); Заменяется на: e.execute(r); Интерфейс ExecutorService execute(Runnable r) и Future Submit(Callable c)
- 12. Runnable и Callable Runnable – выполяемая задача Callable – выполняемая задача, имеющая результат. public class Factorial
- 13. Класс Future Метод Future submit(Callable c) интерфейса ExecutorService возвращает объект Future . Методы Future: boolean isDone()
- 14. Пулы потоков Пулы потоков предназначены для параллельного выполнения задач Runnable и Callable. Класс Executors предоставляет: public
- 15. Интерфейс BlockingQueue boolean add(E e) boolean remove(Object o) boolean offer(E e) boolean offer(E(E e, long timeout,
- 16. Сводка по методам
- 17. Коллекции Интерфейс BlockingQueue имеет реализации: ArrayBlockingQueue DelayQueue LinkedBlockingQueue PriorityBlockingQueue SynchronousQueue LinkedBlockingDeque
- 18. Атомарные операции Данный класс не приспособлен для использования из разных потоков class Counter { private int
- 19. Атомарные операции Атомарными операциями являются: Чтение и запись ссылок на объекты Чтение и запись значений переменных
- 20. Атомарные операции Объекты данного класса может использоваться из разных потоков, но не эффективно. class SynchronizedCounter {
- 21. Атомарные переменные class AtomicCounter { private AtomicInteger c = new AtomicInteger(0); public void increment() { c.incrementAndGet();
- 22. Классы атомарных переменных AtomicBoolean AtomicInteger AtomicLong AtomicReference AtomicIntegerArray AtomicLongArray AtomicReferenceArray
- 24. Скачать презентацию