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

Какие другие механизмы синхронизации потоков в Java вы знаете, отличные от wait и notify из java.util.concurrent?

Компании, где спрашивали
ООО Антара

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

sobes.tech AI

В Java, помимо методов wait() и notify() из java.lang.Object и классов из java.util.concurrent, существуют и другие механизмы синхронизации потоков:

  • Synchronized блоки и методы — базовый способ синхронизации, который позволяет только одному потоку выполнять код внутри блока или метода.

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

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

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

  • CyclicBarrier — позволяет группе потоков ждать друг друга в определённой точке выполнения.

  • ReadWriteLock — разделяет доступ на чтение и запись, позволяя нескольким потокам читать одновременно, но блокируя запись.

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

import java.util.concurrent.locks.ReentrantLock;

ReentrantLock lock = new ReentrantLock();

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

Эти механизмы позволяют более гибко управлять доступом к общим ресурсам и координировать работу потоков.