????JAVA??synchronized????????????????????η??????????????????????????????????????????顣????????????synchronized????????instance??????object reference?????????????static??????class literals(?????????泣??)?????
????????????????????????????????
????A??????synchronized??????????????????????????????????????????????δ?????????????D?D??????????????????????????????????
????B???????????????????lock????????????
????C????????????????????????????????????????????????????????????ν??????????
??????????????synchronized??????????????????????
????????P1??P2?????????????????????ж????????????????????????????????P1??P2??????????????
????1??  ??synchronized???????????η??????????????£?
????Public synchronized void method(){
????//….
????}
???????????????????????synchronized????????????????????????????????????????????????????????????P1????????????????????????????????????γ???????????Ч????????????????????Class???????????????P2????????????????????synchronized???????????
??????????????????????′???
????public void method()
????{
????synchronized (this)      //  (1)
????{
????//…..
????}
????}
????(1)????this??????????????????????????????????P1??????????????????synchronized??????object reference???D?D????????P1?????????????????????P1???????????????P2?????P1????????????????????????????????????°????????????????????????????
????2??????飬??????????£?
????public void method(SomeObject so) {
????synchronized(so)
????{
????//…..
????}
????}
?????????????so???????????????????????????????????δ?????????????????????????????????д????????????????????????????????????δ???????????????????????instance?????????????????????????
????class Foo implements Runnable
????{
????private byte[] lock = new byte[0];  // ????instance????
????Public void method()
????{
????synchronized(lock) { //… }
????}
????//…..
????}
????????????byte??????????????????κζ??????èD?D??????????????????????byte[]???????3??????????Object lock = new Object()?????7?в?????
????3????synchronized??????static ????????????????£?
????Class Foo
????{
????public synchronized static void method1()   // ?????static ????
????{
????//….
????}
????public void method2()
????{
????synchronized(Foo.class)   //  class literal(?????????泣??)
????}
????}
?????????е?method2()???????class literal?????????????????????static??????????Ч????????????????????????????????????????????????Class???????????????Class?????????????????????
??????????Effective Java??????п??????? Foo.class?? P1.getClass()??????????????????????????P1.getClass()?????????Class??????P1???????Foo??????????
?????????????????????ж????????synchronized??static????A????????????synchronized ??instance????B?????????????????Obj???????з?????A??B?????????????????????????????????????????A??????????Obj????????Class????B??????Obj????????????
????С?????£?
?????????synchronized?????????????????????????????????????????
?????????Щ????????????????????????????????????
????1??  ????private ??instance????+???? get???????????????public/protected??instance?????????罫?????????public??????????????????????????????????????????????????????JavaBean?????????????
????2??  ????instance??????????????????ArrayList???????????????????????????????????????get??????????instance????????ú????????????????????????private???????????????Σ??? ???????????get?????????synchronized??????????????????private?????clone()?D?D???????????????????????????????