JavaAdvanced#concurrency

What is a deadlock and how can it be avoided?

A deadlock occurs when two or more threads wait on each other's locks indefinitely. Avoid it by acquiring locks in a consistent global order, using timeouts (tryLock), or minimizing nested locking.

Example
// Thread 1: synchronized(lockA) { synchronized(lockB) {...} }
// Thread 2: synchronized(lockB) { synchronized(lockA) {...} }
// Fix: always acquire lockA before lockB in both threads

Related Questions

1
JavaIntermediate#concurrency

What is the difference between synchronized methods and synchronized blocks?

Open
2
JavaIntermediate#concurrency

What are atomic classes like AtomicInteger used for?

Open
3
JavaAdvanced#concurrency

What is a CountDownLatch?

Open