简单的来说就是 静态方法上的锁是锁住这个类的,普通方法上的锁是锁住这个对象的。
如果往详细了将就得说到synchronized怎么实现的。
Synchronized 两个方式:
对象的时候 偏向锁 轻量级锁 重量级锁
Java synchronized 关键字的实现原理:
synrhronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。其应用层的语义是可以把任何一个非null 对象 作为"锁",当synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为 Class数据存在于永久带,因此静态方法锁相当于该类的一个全局锁;当synchronized作用于某一个对象实例时,锁住的便是对应的代码块。在 HotSpot JVM实现中,锁有个专门的名字:对象监视器。
Link: http://www.cnblogs.com/lykm02/p/4516777.html