public void test20() throws Exception {
final Object obj1=new Object();
final Object obj2=new Object();
new Thread() {
@Override
public void run() {
try {
synchronized (obj1) {
Thread.sleep(2000);
synchronized (obj2) {
System.out.println("thread1");
}
}
} catch (Throwable t) {
t.printStackTrace();
}
}
}.start();
new Thread() {
@Override
public void run() {
try {
synchronized (obj2) {
Thread.sleep(2000);
synchronized (obj1) {
System.out.println("thread2");
}
}
} catch (Throwable t) {
t.printStackTrace();
}
}
}.start();
System.out.println("here");
System.in.read();
}