❓ Что такое дедлок, и как его избежать?
Дедлок (взаимная блокировка) — это ситуация, при которой два или более потока навсегда блокируют друг друга, ожидая освобождения ресурсов, которые каждый из них удерживает. Такой "замкнутый круг" возникает, если два потока пытаются получить доступ к ресурсам, уже занятым друг другом.
🎯 Пример: A захватил ресурс 1 и пытается получить доступ к ресурсу 2, а поток B в это же время захватил ресурс 2 и пытается получить доступ к ресурсу 1. Это приведёт к дедлоку, так как оба потока будут в бесконечном ожидании.
💻 Как избежать:
- Гарантировать, что все потоки запрашивают ресурсы в одинаковом порядке.
- Использование tryLock()
- Избегать слишком большого количества вложенных синхронизированных блоков, чтобы снизить вероятность взаимных блокировок.
Post #651
2.17K
- 👍 5
- ❤ 2
- 🔥 2