Sobes.tech
Back to questions
Senior
4

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

Companies where asked
РТЛабс

Answer from AI

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();
}