[java]代码库package org.he.bin;
/**
* @author BenHe
* @email qing878@gmail.com
* @for description dead lock
*/
public class DeadLock extends Thread {
private boolean threadFlag;
private Object lock1 ;
private Object lock2 ;
public DeadLock(boolean threadFlag,Object lock1,Object lock2) {
this.threadFlag = threadFlag;
this.lock1=lock1;
this.lock2=lock2;
}
@Override
public void run() {
try {
if (threadFlag)
methodA();
else
methodB();
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
void methodA() throws InterruptedException {
synchronized (lock2) {
Thread.sleep(10); // point A
System.out.println(this.getName()+":lock lock2");
System.out.println(this.getName()+":wait for lock1");
synchronized (lock1) {
System.out.println(this.getName()+":in methodA");
}
}
}
void methodB() throws InterruptedException {
// Thread.sleep(10); //point B
synchronized (lock1) {
System.out.println(this.getName()+":lock lock1");
System.out.println(this.getName()+":wait for lock2");
synchronized (lock2) {
System.out.println(this.getName()+":in methodB");
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
Object lock1 = new Object();
Object lock2 = new Object();
new DeadLock(true,lock1,lock2).start();
new DeadLock(false,lock1,lock2).start();
}
}
//源代码片段来自云代码http://yuncode.net