3 книги о Java и concurrency и плюс еще одна

Многопоточное программирование в Java в частности и в программировании вообще является обширной и сложной темой. В связи с изменениями в процессоростроении, произошедшими уже упочти 15 лет назад многопоточное программирование выходит в скиллах программиста low-latency систем на первый план. Для самостоятельного вдумчивого освоения этой темы требуется уйма времени и хороший учебный материал.

Если вы изучаете тему concurrency в Java с полного нуля, то лучше для начала обратиться просто к хорошему учебнику по Java, где будут изложены основы: как создаются потоки, как они переходят из одного состояния в другое, как они взаимодействуют друг с другом и как обрабатывают исключения. После этого стоит переходить к «мясу»:

Java Concurrency in Practice

0321349601-01-mzzzzzzz

Классика жанра. Настольная книга. Основы работы с потоками даются в начале книги для освежения памяти, а дальше в книге освящаются проблемы, которые могут возникнуть у опрометчивого программиста, который посчитал, что он с многопоточным программированием уже разобрался. Книга на английском вышла в 2006 году, но до сих пор является актуальной и хорошей основой для понимания нюансов concurrency в современной Java. Она давно переведена на русский язык.

The Art of Multiprocessor Programming

0123973376-01-mzzzzzzz

Книга написана выдающимися учеными и лекторами Морисом Херлихи и Ниром Шавитом. Несмотря на свой академизм в первой части, дает множество практических знаний во второй части. Чтение первой части нужно для теоретического минимума тем, кто не изучал параллельные системы в университете и разбирается с этой темой самостоятельно. Без чтения первой части было бы трудно понимать смысл и объяснения второй. Первое издание книги вышло в 2008 году. Репринт этого издания был сделан в 2012 году. А в октябре 2020 года вышло 2-е издание этой книги.

Programming Concurrency on the JVM

193435676x-01-mzzzzzzz

Оказывается многопоточные программы можно создавать не только классом Thread и интерфейсом Runnable. Есть и другие модели многопоточного программирования, реализованные в других языках. Ознакомиться с ними будет интересно, чтобы расширить свои горизонты и понимать, что для решения одной и той же задачи есть разные подходы. Книга вышла в 2011 году.

Устаревшее

Если вам попалась устаревшая книга «Java Threads: Understanding and Mastering Concurrent Programming«, не тратьте на нее времени. Ее третье издание вышло аж в 2004 году и не представляет сейчас большого интереса. Для своего времени это было прекрасное введение в concurrency в Java. Но увы, устарело.

Свеженькое и новенькое

Развитие concurrency в Java не стоит на месте. Общее направление, заданное в Java 5, постоянно совершенствуется и развивается. Добавляются новые классы, структуры данных и реализации (ForkJoin), которые позволяют писать асинхронный код (Future, CompletableFuture), делать изощренные синхронизации (Phaser, Exchanger). Обо всех этих новинках можно узнать из презентаций, статей и новых книг по каждой новой версии Java.

В заключение

Реализация потоков в Java не всегда была такой красивой и гладкой. До версии Java 1.4 реализация очень сильно хромала, заставляя Java-программистов выворачиваться наизнанку, чтобы в многопоточной программе избежать ошибок и неожиданных багов. Ни за что не соглашайтесь писать многопоточный код Java 1.4 (и еще: не соглашайтесь писать вообще никакой код на Java 1.4, не читайте книг по Java версии 1.4 и ниже и не прикасайтесь к приложениям, которые требуют Java 1.4 — если такие вообще еще остались).

0201310090-01-mzzzzzzz

Книга Дага Ли поставила точку в этой дискуссии. Даг Ли показал в своей книге, где в Java сделаны ошибки, и как их нужно исправить. Для начала Даг Ли реализовал свои решения в сторонней concurrency-библитеке, а потом его реализация вошла в состав Java 5, от которой мы ведем отсчет хорошей полноценной непротиворечивой Java Memory Model и всех утилит и классов, которыми пользуемся сейчас. Книга написана аж в 1999 году. Почитайте ее хотя бы ради интереса.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s