死锁发生情况一:嵌套互斥锁
package thread_Demo;
class Task implements Runnable
{
private boolean flag;
Task(boolean flag)
{
this.flag = flag;
}
public void run()
{
if(flag)
{
synchronized (MyLock.Locka)
{
System.out.println("locka.........if.");
synchronized (MyLock.Lockb)
{
System.out.println("lockb..........if");
}
}
}
else
{
synchronized (MyLock.Lockb)
{
System.out.println("locka.........else.");
synchronized (MyLock.Locka)
{
System.out.println("lockb..........else");
}
}
}
}
}
class MyLock
{
public static final Object Locka = new Object();
public static final Object Lockb = new Object();
}
public class DeadLock {
/**
* 本程序演示多线程死锁
*/
public static void main(String[] args)
{
Task t1 = new Task(true);
Task t2 = new Task(false);
new Thread(t1).start();
new Thread(t2).start();
}
}