1.示例题目
pulbic class Something(){
          public synchronized void isSyncA(){}
          public synchronized void isSyncB(){}
          public static synchronized void cSyncA(){}
          public static synchronized void cSyncB(){}
}
    那么,加入有Something类的两个实例a与b,那么下列组方法何以被1个以上线程同时访问呢
    a.   x.isSyncA()与x.isSyncB() 
    b.   x.isSyncA()与y.isSyncA()
    c.   x.cSyncA()与y.cSyncB()
    d.   x.isSyncA()与Something.cSyncA()
 
a,都是对同一个实例的synchronized域访问,因此不能被同时访问
 b,是针对不同实例的,因此可以同时被访问
 c,因为是static synchronized,所以不同实例之间仍然会被限制,相当于Something.isSyncA()与   Something.isSyncB()了,因此不能被同时访问。
 那么,第d呢?,书上的 答案是可以被同时访问的,答案理由是synchronzied的是实例方法与synchronzied的类方法由于锁定(lock)不同的原因。
2.synchronized方法与synchronized代码快的区别
synchronized methods(){} 与synchronized(this){}之间没有什么区别,只是 synchronized methods(){} 便于阅读理解,而synchronized(this){}可以更精确的控制冲突限制访问区域,有时候表现更高效率。
3.synchronized不能继承,子类的覆盖方法必须显示的将其定义成synchronized,此时,子类调用父类的方法属于内部锁,内部锁可重入
写代码得多加注意,多加注意
来源:https://www.cnblogs.com/liangge0218/archive/2013/03/26/3292401.html