????Java?????synchronized??Java ??????????????????????????synchronized????????????????η???????????????????????????????instance???????????????object reference????static???????????????泣????class literals????

??????????????synchronized?????????÷?????

???????synchronized?????????η?

public synchronized void fun()
{
    ……
}

????fun()?????????????????synchronized?????????????????????????????????????p1??p2?????????????????p1??????????????л??fun()??????????????Ч????????p2?????p1?????????fun()?????????????????????????????е?p2?????fun()????????????????

?????????static???????synchronized?????????????????synchronized??????????????object reference??????????p1??????????????p1??fun()???????????????????????????????“???????”???????????????????

public void fun()
{
  synchronized(this)  // this????????????????????
  {
      ……
  }
}

????????synchronized????????

public void fun_1(someObject obj)
{
  synchronized(obj)
  {
      ……
  }
}

????????????У????????obj????????????????????static???????sysnchronized?????????????????????????????obj???????δ?????????????????????????????????????????????????????????????synchronized???????????????????????????????????????δ???飬????????????trick??

class Test implements Runnable
{
  private byte[] lock = new byte[0];  // ?????instance????
  public void fun_2()
  {
      synchronized(lock)
      {
          ……
      }
  }
}

??????????????????У???????????????instance??????????????instance?????????????????????lock??????0??????????????????????????????У?????????0??byte[]??????????????????????????????????Object?????????????????????????

????[???]???????????????instance????????????y??????private???????????get()????????????????????????????????????????????public?????????????????????????????????????????????????????????

????[???] ???instance????????????????????ArrayList???????????????????????????????????????get??????????instance????????ú????????????????????????private???????????????Σ??????????????get?????????synchronized??????????????????private?????clone()?D?D???????????????????????????????