Назад к вопросам
Junior — Middle
62
Какие виды блокировок применяются в многопоточном программировании для управления доступом к ресурсам?
Ответ от нейросети
sobes.tech AI
В многопоточном программировании для управления доступом к общим ресурсам применяются различные виды блокировок:
- Мьютексы (Mutex) — обеспечивают эксклюзивный доступ к ресурсу, позволяя только одному потоку владеть блокировкой в момент времени.
- Рекурсивные мьютексы — позволяют одному и тому же потоку многократно захватывать блокировку без взаимной блокировки.
- Семафоры — позволяют ограничить количество потоков, одновременно получающих доступ к ресурсу (например, ограничение до N потоков).
- Читательско-записные блокировки (ReadWriteLock) — позволяют нескольким потокам одновременно читать ресурс, но запись блокирует всех остальных.
- Spinlock (крутильная блокировка) — поток активно ждёт освобождения блокировки, не переходя в состояние ожидания, что эффективно при коротких блокировках.
В Java стандартно используются классы из пакета java.util.concurrent.locks, например, ReentrantLock (рекурсивный мьютекс) и ReadWriteLock.
Пример использования ReentrantLock:
ReentrantLock lock = new ReentrantLock();
lock.lock();
try {
// критическая секция
} finally {
lock.unlock();
}