Многопоточность в Java: ExecutorService
10 советов по использованию ExecutorService
Абстракция ExecutorService была представлена еще в Java 5. На дворе шел 2004 год… На секунду – сейчас Java 5 и 6 больше не поддерживаются и Java 7 готовится пополнить список. А многие Java-программисты по-прежнему не в полной мере понимают как работает ExecutorService. В вашем распоряжении множество источников, но сейчас я хотел бы рассказать о малоизвестных тонкостях и практиках по работе с ней.
Многопоточная сортировка с использованием пула потоков на Java
- Массив разбивается на части
- Каждая часть массива сортируется
- Идем по упорядоченным массивам, сливаем их в один
Здесь применяются идеи сортировки слиянием, но массив разбивается только на две части (рекурсия не используется).
Для слияния можно использовать следующую функцию:
Параллельность в Java на практике
Как следует из названия, здесь будет только про параллельное выполнение (не путать с конкурентностью). Так же я не буду затрагивать проект Loom, который «должен убить» все остальные подходы написания параллельного кода. Надеюсь изложенное ниже позволит начинающим java программистам разобраться с разными подходами и структурировать имеющиеся знания.
Начинающие java программисты, разрабатывая новые сервиса, сталкиваются с задачей выбора технологий, фреймворков и т. д. При написании параллельного кода так же есть множество различных вариантов. Вряд ли кто‑то будет создавать и запускать треды вручную, но можно использовать старый добрый ExecutorService. Можно выбрать Stream API или Reactor с его реализацией параллельной обработки. Есть ещё Akka и куча других экзотических фреймворков. Некоторые из них разработаны под набор конкретных задач, другие же вроде подходят для любых. И как оценить производительность того же Reactor против ExecutorService, или же, например, используя Stream API. Попробуем разобраться.
Настраиваем ExecutorService'ы на практике
В этой статье хочу рассмотреть что такое ExecutorService в Java, зачем он нужен, варианты создания и в как его настраивать для решения практических задач
Понимаю что есть много подобных статей, но в тех статьях что мне удалось найти не хватало практических примеров, сегодня хочу рассказать вам то, что по-настоящему пригодиться в работе
Также я веду блог в телеграм, где вы сможете найти другие материалы от меня
Миграция java-приложения на Fork/Join или о чём нужно помнить
Здесь, я бы хотел рассмотреть на что стоит обратить внимание при переходе на Fork/Join.
@Scheduled + @Async (в Spring Boot)
Недавно отвечал на вопрос почему аннотации @Scheduled
и @Async
иногда используют вместе, данный вопрос попался человеку на собеседовании.
Многие начинающие разработчики на java не до конца понимают в каких потоках происходит выполнение программы в таком случае.
В данном материале постараюсь объяснить зачем аннотации @Scheduled
и @Async
ставят вместе, какая проблема при этом решается, в каких потоках происходит работа программы и как делать правильно.
Подписывайтесь на мой блог в телеграм, где я раньше всего публикую все материалы.