"Strategies to prevent deadlocks: always acquire locks in a fixed order; avoid holding locks for extended periods; reduce the scope of the lock holding code block; use ReentrantLock and similar concurrent lock classes to manage locks, eg using tryLock() to acquire locks without blocking; use timeouts when acquiring locks to prevent threads from waiting indefinitely; use non-blocking algorithms and data structures to avoid deadlocks altogether"