- Перед захватом ресурса выполняется проверка, не заблокирован ли он уже (try lock). Если ресурс свободен, поток его сразу захватывает.
- Можно указать время ожидания ресурса, по истечению которого поток продолжит свою работу. Т.о. поток не будет висеть неопределённое количество времени, а сможет выполнить какую-нибудь полезную работу. Synchronized-блоки такой возможности не дают.
В качестве итога: когда в системе возникают проблемы дедлоков, в первую очередь надо попробовать ввести правило захвата ресурсов. Тогда не нужно будет продумывать дополнительную логику в случае невозможности захватить ресурс. Если правило захвата ввести невозможно, а дополнительный монитор снижает производительность многопоточной системы, тогда нужно использовать гибкий захват.