java线程死锁实例代码



java线程死锁实例代码。

线程1正在执行,锁住对象1,如果还能够锁住对象2则完成执行。
线程2正在执行,锁住对象2,如果还能够锁住对象1则完成执行。
此时对象1已经被线程1锁住,他在等待锁定对象2,
由于这两个线程是同时运行的
但是对象2已经被线程2锁住,他在等待锁定对象1。

线程死锁代码:
public
class ThreadTest implements Runnable {
public int flag;

static
Object o1 = new Object(), o2 = new Object();

public void run()
{
// TODO Auto-generated method stub
if (flag == 1)
{
synchronized (o1) {
try {

Thread.sleep(500);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block

e.printStackTrace();
}
synchronized
(o2) {
System.out.println(“1″);

}
}
}
if (flag == 0) {

synchronized (o2) {
try {


Thread.sleep(500);
} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();
}
synchronized (o1)
{
System.out.println(“0″);
}

}
}
}

public static void main(String[]
args) {
ThreadTest t1 = new ThreadTest();
ThreadTest t2 =
new ThreadTest();
t1.flag = 0;
t2.flag = 1;

Thread th1 = new Thread(t1);
Thread th2 = new Thread(t2);

th1.start();
th2.start();
}

}