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

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

Компании, где спрашивали
Y_lab development

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

sobes.tech AI

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

  • synchronized — встроенный механизм блокировки, который можно применять к методам или блокам кода. Он использует монитор объекта.
  • ReentrantLock из пакета java.util.concurrent.locks — более гибкая блокировка с возможностью прерывания, таймаутов и проверки состояния.
  • ReadWriteLock — позволяет разделять блокировки на чтение и запись, что повышает производительность при большом количестве операций чтения.
  • Semaphore — ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.
  • CountDownLatch и CyclicBarrier — для координации потоков, хотя это не классические блокировки, а синхронизаторы.

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

import java.util.concurrent.locks.ReentrantLock;

ReentrantLock lock = new ReentrantLock();

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