A deadlock is a standstill where two or more threads each wait for a resource the other holds. None can proceed, so all stay stuck forever. The program hangs without crashing.
All four Coffman conditions must hold at once:
Mutual exclusion: a resource can be held by only one thread.
Hold and wait: a thread keeps what it has while waiting for more.
No preemption: you cannot forcibly take a resource away.
Circular wait: a cycle of threads each waits on the next.
Break any one and deadlock cannot form. The most common fix targets circular wait by making every thread acquire locks in the same order.
This matters because deadlocks rarely show in testing and freeze real services silently. Knowing the four conditions gives you concrete levers to design them out.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.