Используете ли вы Java 21 или просто обновили JDK?

Введение Обновление JDK – это ещё не использование Java 21. Многие команды переходят на новую версию платформы, чтобы «быть на LTS», но при этом продолжают писать код так, как будто всё ещё работают на Java 8 или 11. Между тем Java 21 приносит фундаментальные нововведения: виртуальные потоки, структурированную конкурентность, безопасные неизменяемые коллекции, мощные паттерны и … —Читать далее—

Избавляемся от NullPointerException в Java: чистый и масштабируемый подход

Проблема NullPointerException знакома каждому Java-разработчику. Первое, что приходит на ум – добавить != null. Это кажется быстрым решением, но в долгосрочной перспективе приводит к: Так можно ли решить эту задачу элегантнее? Для того, чтобы уйти от использования стандартной проверки на null мы можем выполнить несколько довольно простых шагов. Шаг 1. Часто встречаемые типы данных Перед … —Читать далее—

Механизмы CAS и FAA глазами Java разработчика

В данной статье мы рассмотрим механизмы обеспечения многопоточных вычислений CAS и FAA с точки зрения Java разработчика. Содержание статьи: Введение 1.1. Определение CAS и FAA 1.2. Обоснование важности атомарных операций1.3. Краткий обзор применения CAS и FAA в многопоточных приложениях CAS (Compare-and-Swap) 2.1. Описание механизма CAS 2.2. Примеры использования CAS в Java 2.2.1. AtomicInteger, AtomicLong и … —Читать далее—

ExecutorService в Java и примеры его применения.

ExecutorService – это интерфейс Java, который предоставляет удобный способ управления потоками исполнения. Он позволяет создавать пул потоков исполнения и выполнять задачи в этих потоках. Существует несколько ключевых реализаций ExecutorService: ThreadPoolExecutor ScheduledThreadPoolExecutor CachedThreadPoolExecutor ForkJoinPool Рассмотрим каждый из них детально с примером их использования. ThreadPoolExecutor ThreadPoolExecutor – это реализация интерфейса ExecutorService в Java, который предоставляет пул потоков … —Читать далее—

Как работает volatile в Java

java-volatile

Ключевое слово volatile в Java используется для обозначения переменных, которые могут быть изменены разными потоками. Оно гарантирует видимость изменений, сделанных одним потоком, другим потокам, а также упорядочивает обращения к таким переменным. Основная задача, которую решает ключевое слово volatile: Обеспечение видимости изменений: когда один поток изменяет значение переменной, все другие потоки немедленно видят это изменение. Часто … —Читать далее—