Deadlock in Java Multithreading
Dead lock
Deadlock is an error that can be encountered in multithread programs. It occurs when two or more threads wait indefinitely for each other to relinquish locks.
Deadlock situations can arise that involve more than two threads. Assume that Thread1 waits for a lock held by Thread2 waits for a lock held by Thread3. Thread3 waits for a lock held by Thread1.
Example :
Deadlock Example
Output :
Thread 1: Holding lock 1... Thread 2: Holding lock 2... Thread 1: Waiting for lock 2... Thread 2: Waiting for lock 1...
Deadlock Solution Example
Example :
Output :
Thread 1: Holding lock 1... Thread 1: Waiting for lock 2... Thread 1: Holding lock 1 & 2... Thread 2: Holding lock 1... Thread 2: Waiting for lock 2... Thread 2: Holding lock 1 & 2...