线程同步synchronized

请教大家一个线程方面的问题,synchronized修饰静态方法时,为什么就把该类锁住了呢?而它如果修饰的是不带static方法就成对象锁。为什么啊[捂脸]

img

静态方法是类级别的,仔细想想静态方法和非静态方法的区别就知道了

因为静态方法是与类关联的,而不是与对象实例相关联的,synchronized修饰静态方法时,会获取该方法所在的类的类级别锁,也称为类锁。
非静态方法是与实例关联的,synchronized修饰非静态方法时,它会获取该方法所在对象实例的对象锁。每个对象实例都有一个与之关联的对象锁,不同对象实例之间的对象锁互不干扰。