????????????

????????????????????????????????

???????????????????????????????????????????????????????

????????????????????????static??????????????????static???????

???????????????

????1???????ж??????????????з????

????2??????????? ????????????? ???????????з????????????????????????д????

?????????????????????????

??????????Synchronized??????????????????????????????????????? ???????????????????????????????

?????????з???????о????????μ????Ч??

????1??Synchronized ????????????????????????????????

????Java????

public class Demo1 {        
    public synchronized void m1(){             //...............  
  }    
    public void m2(){            //............    
synchronized(this){                //.........  
}    //........    
}
    }

??????????д????Ч???????????????????????????????????? ????????? demo = new Demo1()???????????????? thread1??thread2??????????demo ??????????????????? thread1??????demo.m1()????thread2??????????????demo.m1() ?? demo.m2(); ???thread1??demo????????????????????????????????????

????????????thread1???? demo1.m1()??thread2???? demo2.m1()????????????У??????????????????Demo1??????????

????2??Synchronized ????????????????飬???????????

????Java????

  • public class Demo2 {     
  •     Object a = new Object();     
  •     Object b = new Object();     
  •     
  •     public void m1(){     
  •         //............   
  •     
  •         synchronized(a){     
  •             //.........   
  •         }     
  •     
  •         //........   
  •     }     
  •     
  •     public void m2(){     
  •         //............   
  •     
  •         synchronized(b){     
  •             //.........   
  •         }     
  •     
  •         //........   
  •     }     
  • }

????????????£??????????????????????????? ????a??b???????a ??b ?????static ??????????? ?????????demo = new Demo2()????????????????thread1??thread2??????????demo??????????????????? thread1??????demo.m1()????thread2??????????????demo.m2()??????????? demo.m1()??????飬???a?? thread1???????