Deadlocks in Java

Explain what a deadlock is in multithreaded programming