死锁


package Project3;

public class Main {
    public static void main(String[] args) {
        StringBuffer a=new StringBuffer();
        StringBuffer b=new StringBuffer();
      new Thread(){
        public void run(){

            synchronized(a){
                a.append("a");
                b.append("1");
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized(b){
                    a.append("b");
                    b.append("2");
                    System.out.println(a);
                    System.out.println(b);
                }
            }
        }
      }.start();

        new Thread(new Runnable(){
            public void run(){

                synchronized(b){
                    a.append("c");
                    b.append("3");
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized(a){
                        a.append("d");
                        b.append("4");
                        System.out.println(a);
                        System.out.println(b);
                    }
                }
            }
        }).start();

    }
}