Sobes.tech
Назад к вопросам
Senior
3

Какие инструменты для синхронизации есть в Java?

Компании, где спрашивали
РТЛабс

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

sobes.tech AI

В Java для синхронизации потоков и управления доступом к разделяемым ресурсам используются следующие инструменты:

  • Ключевое слово synchronized — блоки или методы, которые обеспечивают эксклюзивный доступ к коду.
  • Классы из пакета java.util.concurrent.locks:
    • ReentrantLock — более гибкая альтернатива synchronized с возможностью попытки захвата блокировки и таймаутом.
    • ReadWriteLock — разделяет блокировку на чтение и запись, позволяя нескольким потокам читать одновременно.
  • Семафоры (Semaphore) — ограничивают количество потоков, одновременно выполняющих определённый участок кода.
  • Барьерные синхронизации (CyclicBarrier, CountDownLatch) — позволяют потокам ждать друг друга в определённых точках.
  • Атомарные классы (AtomicInteger, AtomicReference и др.) — обеспечивают атомарные операции без блокировок.

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

import java.util.concurrent.locks.ReentrantLock;

ReentrantLock lock = new ReentrantLock();

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