§68 Лучше executors and tasks, чем потоки. Executor framework - 1.5, java.util.concurrent –выключить (.shutdown() ) –ждать пока не выполнится один или.

Презентация:



Advertisements
Похожие презентации
Многопоточное программирование на Java Java Advanced
Advertisements

Асинхронное взаимодействие Java Execution Framework Сравнение производительности Асинхронные вызовы в Glassfish Кислин Григорий.
Usage java.util.concurrence in Java For students of universities Author: Oxana Dudnik.
Хранение данных (1) Для того, чтобы выяснить, откуда берутся гонки данных, нужно разобраться в том, как обеспечивается хранение данных приложения и его.
Java SE: основные понятия Борис Кварцхава
§67 Избегайте излишней синхронизации. Для того, чтобы избежать падений и проблем с безопасностью, никогда не передавайте управление клиенту в synchronized.
Средства распараллеливания в Java 1.7 (jsr166y...) Михаил Пономаренко, Tech Lead компании Sigma Ukraine.
Многопоточное программирование на Java Java Advanced.
Saint Petersburg, 2012 Java Lecture #05 Concurrency.
1 Java 14. Параллельное выполнение. 2 Терминология При переводе на русский ДВА английских термина имеют одинаковое значение – поток: stream thread Thread.
Многопоточное программирование на Java Java Advanced.
Java.util.concurrent Executor Framework (6) Интерфейс SheduledExecutorService расширяет интерфейс ExecutorService путем добавления методов, управляющих.
Параллелизм и потоки в Java For students of university Author: Oxana Dudnik.
Работа с системой управления версиями при Agile разработке Малышкин Фёдор 25 апреля 2008.
§15 Минимизируйте mutability. Признаки immunable класса Не создавайте методов, способных изменить состояние объекта (mutators) Убедитесь, что от класса.
Пример1 Мир
§Используйте ленивую инициализацию избирательно. В большинстве случаев, нормальная инициализация предпочтительнее, чем ленивая. Если вы используете ленивую.
"Составление циклических алгоритмов". Структура ЦИКЛ используется при составлении алгоритмов, в которых необходимо многократно повторять какие- либо действия.
Введение в многопоточное программирование Java Advanced
1. Что такое разветвляющейся алгоритм? 2. Приведите примеры разветвляющихся алгоритмов.
Транксрипт:

§68 Лучше executors and tasks, чем потоки

Executor framework - 1.5, java.util.concurrent –выключить (.shutdown() ) –ждать пока не выполнится один или все (.invoke() and.invokeAll()) –подождать пока все не закончат (.awaitTermination())

Executors.newSingleThreadExecutor – один поток Executors.newCachedThreadPool – порождает новый поток на каждую новую задачу Executors.newFixedThreadPool – содержит фиксированное кол-во потоков Executors.newScheduledThreadPool – позволяет выполнять отсроченные или периодические действия

Thread Executor (Runnable and Callable)

§69 Concurrency utilities

Сложность использования wait() and notify(), замещается простотой java.util.concurrency –Синхронизированные коллекции –Executor framework –Syncronizers

Нельзя выключить синхронизированность таких коллекций. Locks не будут иметь эффекта.

В 6 раз быстрее, чем предыдущая реализация

Countdown latch – класс барьеров, который позволяет одному или более потокам ждать пока один или более потоков не достигнут барьера и не вызовут countDown() Пример для измерения времени одновременного исполнения задач

Всегда используйте цикл снаружи wait(), и старайтесь избегать его использования без цикла. Причина: если условие уже выполнено, то нет никакой гарантии, что поток когда-либо проснется. И еще