Middle
30
Что такое дедлок?
Companies where asked
Answer from AI
sobes.tech AI
Дедлок (взаимная блокировка) — ситуация в многопоточном приложении, когда два или более потока навсегда блокируют друг друга, ожидая освобождения ресурсов, занятых другим потоком. В результате ни один из потоков не может продолжить работу.
Пример классической ситуации дедлока:
- Поток A захватывает ресурс 1 и ждёт ресурс 2.
- Поток B захватывает ресурс 2 и ждёт ресурс 1.
Оба потока блокируются навсегда.
Для предотвращения дедлоков применяют:
- Чёткий порядок захвата ресурсов.
- Таймауты при ожидании блокировок.
- Использование неблокирующих алгоритмов.
Пример на Java:
synchronized(resource1) {
synchronized(resource2) {
// работа с ресурсами
}
}
Если другой поток пытается захватить ресурсы в обратном порядке, может возникнуть дедлок.