哪位高手能写一个简单的线程死锁出来
阅读
小弟写出来的死锁在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();
}
}
阅读
上一篇:关于hibernate的查询有关问题 下一篇:返回列表