×Закрыть

Java дайджест #3. Concurrency

Данный дайджест, по возможности, не затрагивает общие вопросы по concurrency и больше сконцентрирован в контексте Java-платформы.

Общие вопросы

Если кто еще не слышал, то The Free Lunch Is Over.

Поэтому хорошо бы ознакомится хотя бы поверхностно с тем, как работает система ниже JVM. Как вариант — можно взять книгу Таненбаума «Современные операционные системы». Если есть те, кому совсем нечем заняться, то можно немного почитать про cache coherency, можно прочитать побольше про memory consistency and cache coherence.

Java Concurrency

Для начинающих

A Lazy Developers Introduction to Java Concurrency Executors. Таки для ленивых.

Java Concurrency / Multithreading Tutorial и Java Concurrency Utilities. Неплохие туториалы, но мне показалось, что они больше для начинающих.

Для тех, кто поленился почитать Таненбаума, небольшой туториал про Семафоры. В статье есть ссылки на другие примитивы concurrency, такие как CountDownLatch, ReentrantLock и тд.

Для всех (книги)

Java Concurrency in Practice — это классика. Обязательна к прочтению.

Programming Concurrency on the JVM от Venkat Subramaniam.

Для всех (ресурсы)

Concurrency-interest — мейлинг лист, название говорит само за себя.

>рабочие заметки. Интересный русскоязычный блог, содержит много хардкора.

Psychosomatic, Lobotomy, Saw. Интересный англоязычный блог, содержит еще больше хардкора.

Для всех (остальное)

#когдаужепочинятdoublecheckedlocking интересная статья от Aleksey Shipilёv про публикацию ссылок на объекты.

ForkJoinPool в Java 8 от все того же Aleksey Shipilёv.

А еще в Java 8 появились параллельные стримы, но это не отменяет необходимость думать (хоть и существует готовое решение).

Akka — фреймворк на моделе акторов, документация по его Java API. И статья с неимоверным количеством базз-вордов.

GPars — concurrency-фреймворк с Groovy налетом. И как с ним работать из Java.

Статья от Martin Fowler про архитектуру LMAX и Disruptor. Сайт проекта на github содержит интересные ссылки. И видео с разбором того, что в нем есть. Все же надо понимать, что штука довольно специфичная и, скорее всего, вам будет достаточно ArrayBlockingQueue из java.util.concurrent.

Java Memory Model

В этом году с JMM связано уже немало выступлений и материалов. Учитывая JEP 188, можно предположить, что тема и дальше будет очень популярной.

FAQ по JSR 133. Начало 2004 года, но все еще есть много интересного, правда, с того времени по кускам разъехалось по массе книг и ресурсов.

Java Memory Model Pragmatics — транскрипция доклада Aleksey Shipilёv. И видео доклада. Лучше сначала посмотреть видео, потом почитать текст. Повторять до наступления просветления.

Что «под капотом» у многопоточности Java. Не совсем про JMM, но кому-то может помочь прояснить какие-то моменты. А может и не прояснить.


P.S. Предложения, пожелания по темам для новых выпусков и в общем по выпускам принимаются.

P.P.S. Есть идея сделать дайджест более новостным, но поскольку в мире Java ничего не происходит Java — очень стабильная платформа, то буду благодарен за любые интересные материалы. Присылайте.


← Предыдущий выпуск: Java дайджест #2
Cледующий выпуск: Java дайджест #4

LinkedIn

14 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Замечательный сборник задач на многопоточность:
“The Little Book of Semaphores” www.cs.ucr.edu/.../semaphores.pdf

Если вы хотите оседлать много процессоров, запускайте много jvm, и не партесь с многопоточностью. Мало того что она плохая (один хип, многопоточный memory allocation), да ещё без неё гемора меньше (обычное программирование в single thread качественно проще и надёжнее). А масштабирование per-jvm — неограниченное. Запускай хоть на одной машине, хоть на разных континентах.

запускайте много jvm, и не партесь с многопоточностью.
А эта книжка специально для вас amzn.to/1kkN7y2

Почему вы мне её советуете?

Почему вы мне её советуете?
А вот вы прочитайте, потом прочитайте свой комент. Повторять процедуру, пока не получите ответ на этот вопрос.

Вы очень надменны.

www.ibm.com/...ch_by=practice
Рекомендую серію статей Java theory and practice, Браяна Гетца, автора Java Concurrency in Practice. Багато з них, якщо не більшість стосуються власне теми java concurrency. Дуже цікаво та практично.

дякую, якраз шукав матеріал по цій темі

К докладу Глеба Смирнова можно добавить его статьи на хабре habrahabr.ru/post/143237 и habrahabr.ru/post/209128

По поводу ссылок на фреймворки/либы, есть еще такой себе Quasar от Parallel Universe (Github repo), ’Lightweight threads and actors for the JVM’, можно послушать про философию, причины и планы в подкасте.

Вот это я понимая подборочка, спасибо :)

Не могу не порекомендовать замечательную книгу The Art Of Multiprocessor Programming. Коды примеров на Java, много задач, воспитывает parallel thinking.

Спасибо за дайджест.

Спасибо. Дайджест супер!

Всегда любил заниматься задачами Concurrency. С одной стороны достаточно простой базовый инструментарий мониторов, локов и т.д., но жизнь порождает так много неожиданных и в тоже время логичных ситуаций «гонок», «недоинициализаций объектов», даблчек фокусов и много чего еще, что не позволяет думать, что вот он «просветление» учиться нечему :). Всегда найдется что-то еще.

Богдан, спасибо за дайджест, отличная подборка!

Подписаться на комментарии