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();
}
}