读书人

哪位高手能写一个简单的线程死锁出来

发布时间: 2012-01-29 21:39:32 作者: rapoo

谁能写一个简单的线程死锁出来
小弟写出来的死锁在Eclipse里不生效,程序还是退出了,不知道啥原因

Java code
if(flag==0){                synchronized(o1){                    System.out.println("0--开始锁住o1");                    try {                        Thread.sleep(1000);                    } catch (InterruptedException e) {}                synchronized(o2){                    System.out.println("0--开始锁住o2");                    LockTest.m("0"+Thread.currentThread().getName());                }                }            }                        if(flag==1){                synchronized(o2){                    System.out.println("1--开始锁住o2");                    try {                        Thread.sleep(1000);                    } catch (InterruptedException e) {}                }                synchronized(o1){                    System.out.println("1--开始锁住o1");                    LockTest.m("1"+Thread.currentThread().getName());                }            }


[解决办法]
public class Deadlock {

public static void main(String args[]) {
final Object resource1 = "resource1";
final Object resource2 = "resource2";
Thread t1 = new Thread() {

@Override
public void run() {
synchronized (resource1) {
System.out.println("Thread 1: locked resource 1");
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
synchronized (resource2) {
System.out.println("Thread1: locked resource 2");
}
}
}
};

Thread t2 = new Thread() {

@Override
public void run() {
synchronized (resource2) {
System.out.println("Thread2: locked resource 2");
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
synchronized (resource1) {
System.out.println("Thread2: lock resource 1");
}
}
}
};

t1.start();
t2.start();
}
}

读书人网 >J2EE开发

热点推荐