Sobes.tech
Middle
30

Что такое дедлок?

Companies where asked
ОстровокОстровок

Answer from AI

sobes.tech AI

Дедлок (взаимная блокировка) — ситуация в многопоточном приложении, когда два или более потока навсегда блокируют друг друга, ожидая освобождения ресурсов, занятых другим потоком. В результате ни один из потоков не может продолжить работу.

Пример классической ситуации дедлока:

  • Поток A захватывает ресурс 1 и ждёт ресурс 2.
  • Поток B захватывает ресурс 2 и ждёт ресурс 1.

Оба потока блокируются навсегда.

Для предотвращения дедлоков применяют:

  • Чёткий порядок захвата ресурсов.
  • Таймауты при ожидании блокировок.
  • Использование неблокирующих алгоритмов.

Пример на Java:

synchronized(resource1) {
    synchronized(resource2) {
        // работа с ресурсами
    }
}

Если другой поток пытается захватить ресурсы в обратном порядке, может возникнуть дедлок.