一個synchronized 產生死鎖的簡單例子

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(); }
相關文章
相關標籤/搜索