Что такое Deadlocks?
Взаимная блокировка потоков (дэдлок) бывает по множеству причин, а полностью уберечься от них в Java 8 весьма сложно.
➡️ Зачастую, такое происходит, если один синхронизируемый объект ожидает ресурсов, а они заблокированы другим синхронизированным объектом.
✔️ Чтобы избежать deadlock, можно использовать один из следующих подходов:
• Всегда захватывайте блокировки в одном и том же порядке во всех методах. Например, сначала lock1, затем lock2
• Используйте ReentrantLock с таймаутом вместо synchronized, чтобы избежать бесконечного ожидания.
Post #523
1.97K
