TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #482 4.73K
📌 Что такое deadlock ?

💬 Спросят с вероятностью 31%

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

Представьте ситуацию, где есть два потока и два ресурса (например, два файла или два объекта в памяти).

➕ Поток 1 захватывает ресурс A и ждет освобождения ресурса B.

➕ Поток 2 захватывает ресурс B и ждет освобождения ресурса A.

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

🤔 Чтобы избежать такой ситуации, нужно использовать стратегии, такие как

1️⃣ Предотвращение зацикливания: Все потоки должны запрашивать ресурсы в одном и том же порядке, даже если это означает, что некоторым потокам придется ждать дольше.

2️⃣ Использование тайм-аутов: Потоки могут пытаться захватить ресурс с тайм-аутом. Если ресурс не получен за отведенное время, поток откатывает все свои текущие захваты ресурсов и пытается заново захватить их.

3️⃣ Обнаружение взаимных блокировок: Система может активно обнаруживать циклы ожидания и прерывать один из потоков для разрешения блокировки.

4️⃣ Использование однопоточных моделей: В некоторых случаях можно избежать проблем с многопоточностью, используя асинхронное программирование или реактивные модели, где логика выполнения не блокируется ожиданием ресурсов.

🤔 Понятие Deadlock

Deadlock — это состояние, когда два или более потока вечно ждут друг друга, освободят ли они занятые ресурсы, что приводит к остановке выполнения программы. Избежать этого можно с помощью правильного проектирования и стратегий управления доступом к ресурсам.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
  • ❤ 9
  • 👍 8
More from @easy_java_ru
  1. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  2. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  3. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  4. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  5. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
  6. Oct 7, 2026🤔 К какой категории сущности относится Primary Key? Primary Key (первичный ключ) в базах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →