Mega Code Archive

 
Categories / Java Tutorial / Thread
 

Deal with lock

public class DeadlockDemo {   public static void main(String[] args) throws Exception {     UseShared s1 = new UseShared("x");     UseShared s2 = new UseShared("y");     s1.start();     s2.start();     s1.join();     s2.join();   } } class UseShared extends Thread {   String s1 = "", s2 = "";   UseShared(String name) {     setName(name);   }   public void run() {     for (int i = 0; i < 100; i++) {       if (getName().equals("x"))         method1();       else         method2();       try {         Thread.sleep(1000);       } catch (Exception e) {       }     }   }   void method1() {     synchronized (s1) {       System.out.println("method1: s1");       synchronized (s2) {         System.out.println("method1: s2");       }     }   }   void method2() {     synchronized (s2) {       System.out.println("method2: s1");       synchronized (s1) {         System.out.println("method2: s2");       }     }   } }