Sobes.tech
Назад к вопросам
Junior — Middle
65

Какие есть другие способы реализации синхронизации потоков, кроме использования ключевого слова synchronized?

Ответ от нейросети

sobes.tech AI

Кроме ключевого слова synchronized в Java есть несколько других способов синхронизации потоков:

  • ReentrantLock из пакета java.util.concurrent.locks — более гибкая альтернатива synchronized с возможностью прерывания ожидания блокировки и попыток захвата с таймаутом.

  • Semaphore — ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.

  • CountDownLatch и CyclicBarrier — позволяют координировать выполнение нескольких потоков, ожидая наступления определённых событий.

  • Atomic классы (AtomicInteger, AtomicReference и др.) — обеспечивают атомарные операции без явной блокировки.

  • Volatile — гарантирует видимость изменений переменной между потоками, но не обеспечивает атомарность.

Пример использования ReentrantLock:

import java.util.concurrent.locks.ReentrantLock;

ReentrantLock lock = new ReentrantLock();

lock.lock();
try {
    // критическая секция
} finally {
    lock.unlock();
}