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

Можешь назвать альтернативные способы реализации синхронизации потоков, аналогичные synchronized?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

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

sobes.tech AI

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

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

  • Использование volatile для обеспечения видимости изменений переменных между потоками (не обеспечивает атомарность).

  • Классы из пакета java.util.concurrent, например, Semaphore, CountDownLatch, CyclicBarrier — для более сложной координации потоков.

  • Методы wait(), notify(), notifyAll() для взаимодействия потоков через монитор объекта.

Пример с ReentrantLock:

import java.util.concurrent.locks.ReentrantLock;

ReentrantLock lock = new ReentrantLock();

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