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