Назад к вопросам
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();
}