Взаимное исключение возникает, когда несколько потоков должны использовать ресурсы, которые: ● не могут использоваться несколькими потоками одновременно; ● существуют в ограниченном количестве. Типичный пример – подключения к базам данных, открытые для записи файлы, семафоры.
Одна из стратегий предотвращения взаимной блокировки основана на предотвращении состояния взаимного исключения. ● Использование ресурсов, поддерживающих многопоточный доступ (например, AtomicInteger). ● Увеличение количества ресурсов, чтобы оно достигло или превосходило количество конкурирующих потоков. ● Проверка наличия всех свободных ресурсов перед попытками захвата.