Обзор возможностей многопоточности в Java

30 августа 2017-го в офисе компании Oracle состоялась встреча с Олегом Шелаевым, на тот момент работавшим Developer Advocate в компании ZeroTurnaround, которая делает JRebel и XRebel. Темой встречи стали инструменты создания многопоточных программ на Java.

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

Писать корректный многопоточный код сложно, и выбор правильной модели может существенно облегчить последующие страдания программистов. Но какой подход лучше всего?

В этом докладе решено было разобрать простую задачку на параллельное выполнение кода и решить ее разными способами: потоками, сгруппированными потоками, актёрами, зелеными потоками, с помощью CompletableFuture и так далее. Каждый новый способ отличается по простоте написания и поддержки кода, легче масштабируется на более сложные задачи. В итоге выясняется, что и когда лучше использовать.