Multi-thread deadlock is usually nested synchronization in synchronization.
Actually
Snychronized (Lock 1)
{
Snychronized (Lock 2)
}
While sending deadlocks
/*
Multi-thread deadlock
Nested synchronization in synchronization;
It mainly avoids deadlock in writing programs.
*/
Class Test11 implements Runnable
{
Private boolean flag;
Test11 (boolean flag)
{
This. flag = flag;
}
Public void run ()
{
If (flag)
{
While (true)
{
Synchronized (MyLock. locka)
{
System. out. println ("if locka ");
Synchronized (MyLock. lockb)
{
System. out. println ("if lockb ");
}
}
}
}
Else
{
Synchronized (MyLock. lockb)
{
System. out. println ("else lockb ");
Synchronized (MyLock. locka)
{
System. out. println ("else locka ");
}
}
}
}
}
Class MyLock
{
Static Object locka = new Object ();
Static Object lockb = new Object ();
}
Class Test_11_15
{
Public static void main (String [] args)
{
System. out. println ("hello wolrd ");
Thread t1 = new Thread (new Test11 (true ));
Thread t2 = new Thread (new Test11 (false ));
T1.start ();
T2.start ();
}
}